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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript中为什么string可以拥有方法?

發布時間:2025/3/20 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript中为什么string可以拥有方法? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所有文章搬運自我的個人主頁:sheilasun.me

引子

我們都知道,JavaScript數據類型分兩大類,基本類型(或者稱原始類型)和引用類型。

基本類型的值是保存在棧內存中的簡單數據段,它們是按值訪問的。JS中有五種基本類型:Undefined、Null、Boolean、Number和String。

引用類型的值是保存在堆內存中的對象,它的值是按引用訪問的。引用類型主要有Object、Array、Function、RegExp、Date。

對象是擁有屬性和方法的,所以我們看到下面這段代碼一點也不奇怪.

var favs=['雞蛋','蓮蓬']; favs.push('秋葵'); console.log(favs);//["雞蛋", "蓮蓬", "秋葵"] console.log(favs.length);//3

Array是引用類型,所以它自然可以擁有屬性(length)和方法(push),這天經地義地就像夏天一定要吃冰淇淋一樣。但是,再看下面的代碼,仔細想想,這這這,合法嗎?

var realMessage="Said I love you but I lied"; var myMessage=realMessage.substring(5,15); console.log(myMessage); //"I love you"

有一個心碎的女紙任性地對一個用來分手的字符串任性地執行了“substring”方法,然后開心地看著剪輯版睡過去了??墒强墒强墒?#xff0c;不是說string是基本類型嗎,為什么它可以擁有方法??還有沒有王法啊青天大老爺!

其實,這一切,都是因為有個叫“基本包裝類型”的東東。這個基本包裝類型特別耿直,是真正的“事了拂衣去,深藏功與名”!

基本包裝類型

除了一開始提到的Object、Array等引用類型,JavaScript還為我們提供了三種特殊的引用類型:String、Number和Boolean,方便我們操作對應的基本類型。

繼續看上面的剪輯字符串的例子,有沒有注意到,盡管使用了substring方法,realMessage本身的值是不會變的,調用這個方法只是返回了一個新的字符串。

這就是基本包裝類型的作用了。本來你是沒有方法的,但是你想用方法的時候,你盡管調,對應的基本包裝類型有這個方法就行。例如上面的substring方法,string這個基本類型是不可能有這個方法的,但是String這個包裝類型有啊,它會吭吭哧哧地把這個方法執行完把結果返回。在執行到:

realMessage.substring(5,15)

這行代碼時,發生了很多事。

首先,它會從內存中讀取realMessage的值。當處于這種讀取模式下的時候,后臺就開始干活了。JS高程是這樣描述后臺完成的這些動作的:

1.創建String類型的一個實例;
2.在實例上調用指定的方法;
3.銷毀這個實例

上面的例子可以用這樣的代碼來說明:

var _realMessage=new String("Said I love you but I lied"); var myMessage=_realMessage.substring(5,15); _realMessgae=null; //方法調用后即銷毀

所以,這樣我們就明白了,并不是基本類型string執行了自身方法,而是后臺為它創建了一個對應的基本包裝類型String,它根據基本類型的值實例化出了一個實例,讓這個實例去調用指定方法,最后銷毀自己,感天動地有木有。

注意最后一步基本包裝類型“會銷毀”的特性,這決定了我們不能為基本類型值添加自定義屬性和方法。

var me="sunjing"; me.age=18; console.log(me.age);//undefined

我給“me“這個字符串添加了age屬性,值設為美好的18歲,然并卵,再次訪問時,這個屬性已經渺無蹤跡了。這是因為:

執行到第二行代碼屬性賦值時,后臺創建了一個基本包裝類型的實例,這個age屬性確實掛到實例上去了,但是緊跟著,這個實例就被銷毀了。執行到第三行時,又重新創建了新的基本包裝類型的實例,自然是沒有age屬性的。

顯示使用基本包裝類型

除了在字符串處于讀取模式下,后臺會幫我們創建基本包裝類型實例時,我們自己也可以顯示地創建。

var str=new String("hello"); var str2=str.toUpperCase(); console.log(str2);//"HELLO:

這樣與后臺幫我們創建時變量中保存的東西是不同的。

var str1=new String("hello"); var str2="hello"; typeof str1 //"object" typeof str2 //"string"

總結

多虧了有基本包裝類型,我們操作string、boolean、number這三種基本類型更方便了。每當讀取這三種基本類型值時,后臺會創建對應的包裝類型實例,這個實例會調用指定方法,調用完會被銷毀。這種短暫的生命周期決定了我們不能為基本類型添加自定義的屬性和方法。

轉載于:https://www.cnblogs.com/SheilaSun/p/4765394.html

總結

以上是生活随笔為你收集整理的JavaScript中为什么string可以拥有方法?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品一区免费观看 | xxxxwwww国产| 午夜免费看片 | 亚洲黄片一区二区 | 亚洲在线资源 | 色先锋av | 蜜桃91麻豆精品一二三区 | 无码少妇精品一区二区免费动态 | 色香欲综合网 | 国产女人18毛片水真多1 | 日韩av在线中文字幕 | 国产乱码精品一区二区 | 国产精品一页 | 岛国精品在线播放 | 欧美日韩在线二区 | www.白丝| 一级做a在线观看 | 亚洲少妇18p | 伊人222成人综合网 亚洲日本中文 | 亚洲国产免费视频 | 六月丁香激情 | 色性av| 中国色老太hd | 欧美亚洲国产一区二区三区 | 欧美成本人视频 | 一集毛片 | 久久av喷吹av高潮av萌白 | 久久精品国产欧美亚洲人人爽 | 国产老女人精品毛片久久 | 福利在线观看 | 片黄在线观看 | 日韩大胆视频 | www.色日本 | 亚洲永久无码精品 | 欧美在线三区 | 日本少妇xxxx软件 | 91免费在线视频观看 | 少妇高潮网站 | 亚洲免费区 | 久久波多野 | www.色呦呦 | 精品欧美一区二区在线观看 | 中文字幕一区二区久久人妻网站 | 91精品国产高清一区二区三区蜜臀 | 高级毛片 | 亚洲网在线观看 | 天天色天天射天天干 | 最新av中文字幕 | 亚洲综合自拍偷拍 | 国产精品乱码一区二区视频 | 久久精品视频一区二区三区 | 国产成人无码精品久久久久久 | 国产女主播在线 | 午夜黄色在线 | 中文字幕日韩精品在线观看 | 日日影院 | 亚洲综合精品视频 | 无套爆插 | kendra lust free xxx | 黄色大片av | 欧美福利一区二区三区 | 天天综合在线视频 | 成人免费观看视频大全 | 最新天堂在线视频 | 久久综合伊人77777麻豆最新章节 | 精品久久久久久中文字幕人妻最新 | 欧美一区在线视频 | 黄色成人av网站 | 亚洲欧美国产另类 | a级片在线播放 | 国产精品suv一区 | 最新色视频| 在线www| 美女超碰 | 久久欧 | 精品国产美女 | 久久久噜噜噜久久中文字幕色伊伊 | 多啪啪免费视频 | 久久久久久亚洲精品 | 欧美日韩免费在线视频 | 插我一区二区在线观看 | 日韩二区三区 | 久久久国产成人 | 在哪里可以看黄色片 | 日韩精品视频在线播放 | 噜噜噜久久 | 中文字幕第2页 | jizz美女 | 福利姬在线播放 | 天天干天天综合 | 国产美女被遭强高潮免费网站 | 天天人人综合 | 91免费版黄色 | 国产精品99一区二区三区 | 久久黄色片视频 | 亚洲欧美一区二区三区情侣bbw | 草莓视频在线观看18 | 国产妇女馒头高清泬20p多 | 中国女人一级一次看片 |