JavaScript裝箱及拆箱boxing及unBoxing用法解析
首先我們來(lái)看看這段代碼
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)用一些方法來(lái)操作這些數(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í)例;
下面來(lái)看看代碼實(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ì)象
它是通過(guò)引用類型的valueOf()或者toString()方法來(lái)實(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)制圖片流過(guò)程詳解
- 使用JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)秒表功能(含開始、暫停、繼續(xù)、重置功能)
- JavaScript監(jiān)聽鍵盤事件代碼實(shí)現(xiàn)
- JavaScript forEach中return失效問(wèn)題解決方案
- JavaScript Window瀏覽器對(duì)象模型原理解析
- 基于JavaScript或jQuery實(shí)現(xiàn)網(wǎng)站夜間/高亮模式
- JavaScript類的繼承多種實(shí)現(xiàn)方法
相關(guān)文章
面向JavaScript入門初學(xué)者的二叉搜索樹算法教程
二叉搜索樹則是二叉樹的一種,但它只允許你在左側(cè)節(jié)點(diǎn)儲(chǔ)存比父節(jié)點(diǎn)小的值,右側(cè)只允許儲(chǔ)存比父節(jié)點(diǎn)大的值,這篇文章主要給大家介紹了關(guān)于JavaScript二叉搜索樹算法的相關(guān)資料,需要的朋友可以參考下2021-09-09el-popover放在el-table中點(diǎn)擊無(wú)反應(yīng)問(wèn)題解決方案
我們想在table中給btn加彈框但是?el-popover點(diǎn)擊按鈕沒(méi)有任何反應(yīng),解決思路是通過(guò)給每個(gè)el-popover都加上單獨(dú)的id,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-04-04基于JS實(shí)現(xiàn)網(wǎng)頁(yè)中的選項(xiàng)卡(兩種方法)
這篇文章主要介紹了用js語(yǔ)句實(shí)現(xiàn)網(wǎng)頁(yè)中的選項(xiàng)卡(兩種方法),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06刪除數(shù)組條目中重復(fù)的條目(可能有多個(gè)),返回值是一個(gè)僅包含被刪除的重復(fù)條目的新數(shù)組。
刪除數(shù)組條目中重復(fù)的條目(可能有多個(gè)),返回值是一個(gè)僅包含被刪除的重復(fù)條目的新數(shù)組。...2007-09-09