日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

为什么基本类型可以调用方法——以字符串为例

發(fā)布時(shí)間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么基本类型可以调用方法——以字符串为例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

引用類型中的基本包裝類型

對(duì)于str.substring(2)這種方法我們經(jīng)常使用,

var str = "hello world";

var s1 = str.substring(2);?

可是str明明是個(gè)字符串(基本類型),又不是對(duì)象,為什么可以調(diào)用方法呢。。。。

解釋說(shuō)明:

當(dāng)我們用str這個(gè)字符串調(diào)用方法時(shí),后臺(tái)已經(jīng)為我們做了一系列操作,讓我們來(lái)看看究竟都做了哪些操作呢

當(dāng)?shù)诙写a訪問(wèn)str時(shí),訪問(wèn)過(guò)程處于一種讀取模式(即從內(nèi)存中讀取這個(gè)字符串的值),而在讀取模式下訪問(wèn)字符串時(shí),后臺(tái)會(huì)做如下處理

a.創(chuàng)建String類型的一個(gè)實(shí)例

b.在實(shí)例上調(diào)用指定的方法

c.銷毀這個(gè)實(shí)例

針對(duì)此處代碼,可以想象是后臺(tái)進(jìn)行了如下處理

var str = new String("hello world");

var s1 = str.substring(2);

str = null;?

到此就解釋了為什么字符串這個(gè)基本類型可以調(diào)用方法了。

———————————————分割線——————————————————

接下來(lái)我們了解下基本包裝類型,即用到的new String("hello world")

為了便于操作基本類型,ECMAScript提供了三個(gè)特殊的引用類型:Boolean、Number和String。

實(shí)際上,每當(dāng)讀取一個(gè)基本類型的值時(shí),后臺(tái)就會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的基本包裝類型的對(duì)象,就如上面的例子所示。

引用類型和基本包裝類型的區(qū)別

主要是對(duì)象生存周期的不同

a.使用new創(chuàng)建的引用類型的實(shí)例,在執(zhí)行流離開(kāi)當(dāng)前作用域之前都一直保存在內(nèi)存中,

b.自動(dòng)創(chuàng)建的包裝類型的對(duì)象只存在于一行代碼的執(zhí)行瞬間,然后被立即銷毀

舉個(gè)栗子

var str = “hello world”;

str.color = "red";

alert(str.color);? //undefined

第二行代碼創(chuàng)建的String對(duì)象在執(zhí)行第三行代碼時(shí)已經(jīng)被銷毀,第三行代碼又創(chuàng)建了自己的String對(duì)象,而該對(duì)象沒(méi)有color屬性。

當(dāng)然可以顯示的調(diào)用String、Boolean和Number來(lái)創(chuàng)建基本包裝類型的對(duì)象,但是再不是絕對(duì)必要的情況下不建議使用,這樣很容易讓人分不清楚是在處理基本類型還是引用類型的值。

Object構(gòu)造函數(shù)也會(huì)像工廠方法一樣,根據(jù)傳入值的基本類型返回相應(yīng)基本包裝類型的實(shí)例。例如

var obj = new Object("hello world");

alert(obj instanceof String ) ;? ?//true

需要注意的是:

使用new 調(diào)用基本包裝類型的構(gòu)造函數(shù),與直接調(diào)用同名的轉(zhuǎn)型函數(shù)是不一樣的

var value = “25”;

var number = Number(value);? ?//轉(zhuǎn)型函數(shù)

alert(typeof number);? ?// "number"

var obj = new Number(value);

alert( typeof obj );? ? // "object"

此處number中保存的是基本類型的值25

obj中保存的是Number的實(shí)例

?

——參考《javascript 高級(jí)程序設(shè)計(jì)》第五章的第六節(jié)的基本包裝類型

?

轉(zhuǎn)載于:https://www.cnblogs.com/xue6666/p/9174995.html

總結(jié)

以上是生活随笔為你收集整理的为什么基本类型可以调用方法——以字符串为例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。