淺談javascript中的包裝對象

javascript中的對象類型分爲內置類型和對象類型,其中內置類型包括sting number boolean null undefined五種;對象類型包括Array Function regExp Date 等等,統稱爲Object類型。咱們知道在一個對象中包含一系列屬性名/屬性值的集合,能夠經過"."來訪問對象的屬性或方法,如:javascript

window.onload=function(){//可執行代碼}

但咱們經常能夠看到這樣的代碼:java

var str="hello world";
str.split(" ");            // ["hello","world"]

上段代碼中,str爲一個字符串,是存在棧中的一個值,並不屬於對象,可是爲何str能夠調用split方法呢?這就要用到包裝對象的概念。當要操做字符串、數字、布爾值的屬性時,js會在內存中自動建立一個對象,用來對內置類型進行包裝,使內置類型暫時擁有普通對象功能,能夠存取屬性,一旦引用結束,包裝對象自動銷燬。以下面代碼:code

var str="123456";
str.a=7; //爲字符串添加一個屬性a,並賦值爲7
console.log(str.a) //undefined

上面的代碼咱們能夠分解爲:對象

var str="123456";
var newStr=new String("str");//建立包裝對象
newStr.a=7; //爲字符串添加一個屬性a,並賦值爲7
console.log(newStr.a);//7
newStr=null;//釋放包裝對象
console.log(str.a) //undefined

自此咱們不難理解爲何str.a的值爲undefied;ip

相關文章
相關標籤/搜索