最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript包裝對(duì)象使用詳解

 更新時(shí)間:2015年07月09日 09:05:58   投稿:hebedich  
javascript代碼運(yùn)行的過(guò)程中基本類(lèi)型會(huì)找到對(duì)應(yīng)的包裝對(duì)象,然后包裝對(duì)象把所有的屬性和方法給了基本類(lèi)型,然后包裝對(duì)象被系統(tǒng)進(jìn)行銷(xiāo)毀,所以理解了包裝對(duì)象可以很好的理解之前寫(xiě)的代碼為什么可以這樣做了。

  JavaScript對(duì)象是一種復(fù)合值:它是屬性和已命名值的集合。通過(guò)"."符號(hào)來(lái)引用屬性值。當(dāng)屬性值是一個(gè)函數(shù)時(shí),稱(chēng)為方法。

①一段你常用但卻未必明白其真正底層原理的代碼:

var s = "hello world!";
var word = s.substring(s.indexOf(" ")+1,s.length);
 

  如前面所說(shuō),這里變量s只是一個(gè)字符串原始類(lèi)型,它怎么會(huì)有屬性(s.length)和方法(s.indexOf()、s.substring())呢?沒(méi)錯(cuò),這正跟我們正要介紹的包裝對(duì)象有關(guān)。原因是:只要引用了字符串s的屬性,JavaScript就會(huì)將字符串值通過(guò)調(diào)用new String(s)的方式轉(zhuǎn)換成對(duì)象,這個(gè)對(duì)象繼承了字符串(String)對(duì)象的方法,并被用來(lái)處理屬性的引用。一旦屬性引用結(jié)束,這個(gè)新創(chuàng)建的對(duì)象就會(huì)被銷(xiāo)毀。

  同字符串一樣,數(shù)字和布爾值也有各自的方法:通過(guò)Number()和Boolean()構(gòu)造函數(shù)創(chuàng)建一個(gè)臨時(shí)對(duì)象。存取字符串、數(shù)字或布爾值的屬性時(shí)創(chuàng)建的臨時(shí)對(duì)象就是包裝對(duì)象。5種原始類(lèi)型中的剩余兩種null和undefined沒(méi)有包裝對(duì)象:訪(fǎng)問(wèn)它們的屬性會(huì)造成一個(gè)類(lèi)型錯(cuò)誤(Uncaught TypeError)。明白了上面的代碼,那么再看如下代碼:

var s = "test";
s.len = 4;//給它設(shè)置一個(gè)屬性
var t = s.len;

  不認(rèn)真的同學(xué)這里就會(huì)認(rèn)為最后t就是等于4了。難道最后t不等于4嗎?是的,最后t的值是undefined。想知道為什么請(qǐng)看繼續(xù)看解析:原來(lái)以這里第二行代碼只是創(chuàng)建了一個(gè)臨時(shí)字符串對(duì)象,并給len屬性賦值為4,隨即銷(xiāo)毀這個(gè)對(duì)象。而第三行又是通過(guò)原始字符串s創(chuàng)建一個(gè)新字符串對(duì)象(這個(gè)不是第二行代碼創(chuàng)建的對(duì)象,第二行代碼創(chuàng)建的對(duì)象已經(jīng)被銷(xiāo)毀了)并嘗試讀取其len屬相,這個(gè)屬性自然不存在,因此表達(dá)式的結(jié)果為undefined。這段代碼說(shuō)明了在讀取字符串、數(shù)字和布爾值的屬性值或方法(實(shí)際上是它們對(duì)應(yīng)包裝對(duì)象的屬性值或方法)表現(xiàn)的像對(duì)象一樣。但如果你試圖給屬性賦值,則會(huì)忽略這個(gè)操作:修改只是發(fā)生在臨時(shí)對(duì)象身上,而這個(gè)臨時(shí)對(duì)象并不會(huì)繼續(xù)保留下來(lái)。

  注意:可通過(guò)String(),Number(),Boolean()構(gòu)造函數(shù)來(lái)顯示創(chuàng)建包裝對(duì)象:

var s = "test",n=1,b=true;//一個(gè)字符串、數(shù)字和布爾值
var S = new String(s);//一個(gè)字符串對(duì)象
var N = new Number(n);//一個(gè)數(shù)值對(duì)象
var B = new Boolean(b);//一個(gè)布爾對(duì)象

  JavaScript會(huì)在必要時(shí)將包裝對(duì)象轉(zhuǎn)換成原始值,因此上段代碼中的對(duì)象S、N和B常常但不總是表現(xiàn)的和值s、n和b一樣。"=="等于運(yùn)算符將原始值和其包裝對(duì)象視為相等,但“===”全等運(yùn)算將它們視為不等。通過(guò)typeof運(yùn)算符也可以看到原始值和其包裝對(duì)象的不同:

   ?、賢ypeof(s);  ->"string"
     typeof(S);  ->"object"
   ?、趖ypeof(n);  ->"string"
     typeof(N);  ->"object"
   ?、踭ypeof(b);  ->"string"
     typeof(B);  ->"object"

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • 如何用JS將base64圖片壓縮至指定大小

    如何用JS將base64圖片壓縮至指定大小

    在開(kāi)發(fā)中通常在上傳圖片時(shí),由于各種限制,需要將上傳的圖片壓縮到某一大小范圍內(nèi)才能上傳,這篇文章主要介紹了如何用JS將base64圖片壓縮至指定大小的相關(guān)資料,需要的朋友可以參考下
    2025-04-04
  • JavaScript中Array功能方法詳解

    JavaScript中Array功能方法詳解

    Array?對(duì)象是前端開(kāi)發(fā)中使用頻率最高的數(shù)據(jù)結(jié)構(gòu)之一,今天我們來(lái)復(fù)習(xí)一下它的幾種操作方法,find(),some()和filter(),通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 基于JS實(shí)現(xiàn)蜘蛛俠動(dòng)作游戲的示例代碼

    基于JS實(shí)現(xiàn)蜘蛛俠動(dòng)作游戲的示例代碼

    這篇文章主要介紹了如何利用JavaScript實(shí)現(xiàn)簡(jiǎn)單的蜘蛛俠動(dòng)作游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JavaScript游戲開(kāi)發(fā)有一定的幫助,需要的可以參考一下
    2022-06-06
  • JavaScript實(shí)現(xiàn)拖動(dòng)滑塊拼圖驗(yàn)證功能(html5、canvas)

    JavaScript實(shí)現(xiàn)拖動(dòng)滑塊拼圖驗(yàn)證功能(html5、canvas)

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)拖動(dòng)滑塊拼圖驗(yàn)證(html5、canvas),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • JavaScript枚舉選擇jquery插件代碼實(shí)例

    JavaScript枚舉選擇jquery插件代碼實(shí)例

    這篇文章主要介紹了JavaScript枚舉選擇jquery插件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 關(guān)于事件mouseover ,mouseout ,mouseenter,mouseleave的區(qū)別

    關(guān)于事件mouseover ,mouseout ,mouseenter,mouseleave的區(qū)別

    mouseover ,mouseout ,mouseenter,mouseleave,都是鼠標(biāo)點(diǎn)擊而觸發(fā)的事件,各自代表什么意思,有哪些區(qū)別呢?下面跟著腳本之家小編一起看看吧
    2015-10-10
  • 微信端開(kāi)發(fā)--登錄小程序步驟

    微信端開(kāi)發(fā)--登錄小程序步驟

    本篇文章主要介紹了微信端開(kāi)發(fā)--登錄小程序步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 微信小程序 組件的外部樣式externalClasses使用詳解

    微信小程序 組件的外部樣式externalClasses使用詳解

    這篇文章主要介紹了微信小程序里 組件的外部樣式externalClasses使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • js實(shí)現(xiàn)跨域訪(fǎng)問(wèn)的三種方法

    js實(shí)現(xiàn)跨域訪(fǎng)問(wèn)的三種方法

    這篇文章主要介紹了js實(shí)現(xiàn)跨域訪(fǎng)問(wèn)的三種方法,包括基于iframe實(shí)現(xiàn)跨域、基于script標(biāo)簽實(shí)現(xiàn)跨域以及后臺(tái)代理方式 ,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 輕松實(shí)現(xiàn)Bootstrap圖片輪播

    輕松實(shí)現(xiàn)Bootstrap圖片輪播

    這篇文章主要介紹了全面解析Bootstrap圖片輪播效果,Bootstrap提供了carousel插件,實(shí)現(xiàn)圖片輪播非常方便,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評(píng)論

大冶市| 龙岩市| 五莲县| 丰宁| 抚州市| 南漳县| 垫江县| 中超| 监利县| 松潘县| 临洮县| 城口县| 嘉祥县| 呼伦贝尔市| 新泰市| 斗六市| 积石山| 泸水县| 呼图壁县| 清苑县| 南宫市| 马山县| 泊头市| 临夏县| 宁乡县| 香河县| 如皋市| 炎陵县| 余庆县| 海兴县| 江都市| 大悟县| 固始县| 江华| 保山市| 南投县| 微山县| 思南县| 宜良县| 平塘县| 邛崃市|