JavaScript裝箱及拆箱boxing及unBoxing用法解析
首先我們來看看這段代碼
var s1 = "abc";
var s2 = s1.indexOf("a")
s1 是個(gè) string 啊,怎么會(huì)有 indexOf() 方法呢?
這里就涉及到了 JavaScript 中的裝箱與拆箱的概念了
裝箱:把基本數(shù)據(jù)類型轉(zhuǎn)化為對(duì)應(yīng)的引用數(shù)據(jù)類型的操作
在《javascript高級(jí)程序設(shè)計(jì)》中有這樣一句話:
每當(dāng)讀取一個(gè)基本類型的時(shí)候,后臺(tái)就會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的基本包裝類型對(duì)象,從而讓我們能夠調(diào)用一些方法來操作這些數(shù)據(jù)。
還是拿最開始的例子
var s1 = "abc";
var s2 = s1.indexOf("a")
變量s1是一個(gè)基本類型值,它不是對(duì)象,它不應(yīng)該有方法。但是js內(nèi)部為我們完成了一系列處理(即裝箱),使得它能夠調(diào)用方法,實(shí)現(xiàn)的機(jī)制如下:
(1)創(chuàng)建String類型的一個(gè)實(shí)例;
(2)在實(shí)例上調(diào)用指定的方法;
(3)銷毀這個(gè)實(shí)例;
下面來看看代碼實(shí)現(xiàn):
var s1 = new String("some text");
var s2 = s1.substring(2);
s1 = null;
這樣就完成裝箱,我們也就能在s1上調(diào)用方法了
拆箱:將引用類型對(duì)象轉(zhuǎn)換為對(duì)應(yīng)的值類型對(duì)象
拆箱:將引用類型對(duì)象轉(zhuǎn)換為對(duì)應(yīng)的值類型對(duì)象
它是通過引用類型的valueOf()或者toString()方法來實(shí)現(xiàn)的。如果是自定義的對(duì)象,你也可以自定義它的valueOf()/tostring()方法,實(shí)現(xiàn)對(duì)這個(gè)對(duì)象的拆箱。
var objNum = new Number(123);
var objStr =new String("123");
console.log( typeof objNum ); //object
console.log( typeof objStr ); //object
console.log( typeof objNum.valueOf() ); //number
console.log( typeof objStr.valueOf() ); //string
console.log( typeof objNum.toString() ); // string
console.log( typeof objStr.toString() ); // string
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用JavaScript獲取掃碼槍掃描得到的條形碼的思路代碼詳解
- 基于javascript處理二進(jìn)制圖片流過程詳解
- 使用JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)秒表功能(含開始、暫停、繼續(xù)、重置功能)
- JavaScript監(jiān)聽鍵盤事件代碼實(shí)現(xiàn)
- JavaScript forEach中return失效問題解決方案
- JavaScript Window瀏覽器對(duì)象模型原理解析
- 基于JavaScript或jQuery實(shí)現(xiàn)網(wǎng)站夜間/高亮模式
- JavaScript類的繼承多種實(shí)現(xiàn)方法
相關(guān)文章
JavaScript進(jìn)階之前端文件上傳和下載示例詳解
這篇文章主要為大家介紹了JavaScript進(jìn)階之前端文件上傳和下載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
JavaScript生成隨機(jī)數(shù)的4種自定義函數(shù)分享
這篇文章主要介紹了JavaScript生成隨機(jī)數(shù)的4種自定義函數(shù)分享,本文講解了4種方法并同時(shí)給出4個(gè)代碼片段,需要的朋友可以參考下2015-02-02
JS判斷來路是否是百度等搜索索引進(jìn)行彈窗或自動(dòng)跳轉(zhuǎn)的實(shí)現(xiàn)代碼
這篇文章主要介紹了JS判斷來路是否是百度等搜索索引進(jìn)行彈窗或自動(dòng)跳轉(zhuǎn)的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10
JavaScript實(shí)現(xiàn)QueryString獲取GET參數(shù)的方法
本文為大家詳細(xì)介紹下如何通過JavaScript實(shí)現(xiàn)QueryString獲取GET參數(shù),具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07
Makefile/cmake/node-gyp中區(qū)分判斷不同平臺(tái)的方法
今天小編就為大家分享一篇關(guān)于Makefile/cmake/node-gyp中區(qū)分判斷不同平臺(tái)的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
使用原生JS添加進(jìn)場(chǎng)和退場(chǎng)動(dòng)畫詳解
總所周知啊,身為一個(gè)合格的前端搬磚工,會(huì)編寫并且添加一些基礎(chǔ)的動(dòng)畫效果可謂是比較基礎(chǔ)且輕車熟路的技能了。本文將教大家如何使用原生JS添加進(jìn)場(chǎng)和退場(chǎng)動(dòng)畫,感興趣的可以了解一下2022-10-10

