本文主要介紹了為什麼a="abc" 不等於 a=new String("abc"),需要的朋友可以參考下,希望能幫助大家。
顯而易見
a="abc" typeof a //string b=new String("abc") typeof b // object a==b //true a===b //false
但是為什麼呢?看了很多書,問了好幾個大神,其實自己還是稀裡糊塗的。這裡記錄一下,備查。
在js中,區分原始資料類型和包裝類型。數字、字串、布林、null、undefined 屬於原始資料類型,而Number、String、Boolean屬於包裝類型,透過new Number 建立的是包裝類型的衍生物件。所以兩者是不等的。
直接賦值為基本型別之後的使用過程如下:
1、建立String類型的一個實例
2、在實例上呼叫指定的方法
3、銷毀實例
範例:
var a="123" a.toFixed===Number.prototype.toFixed;
這裡還有一個說法:裝箱,拆箱
裝箱,就是用這個值類別建構一個對應的包裝物件
##
var a=10 ,b="javascript" , c=true; var o_a=new Number(a); var o_b=new String(b); var o_c=new Boolean(c);
var a=10; var o_a=new Number(a); var b=o_a.valueOf();//这就是拆箱的过程。
以上是為什麼a='abc' 不等於 a=new String('abc')的詳細內容。更多資訊請關注PHP中文網其他相關文章!