基本包裝類型是特殊的參考類型。每當讀取一個基本類型值的時候,後台就會建立一個對應的基本包裝類型的物件,以便可以呼叫屬性、方法來進行後續操作。
ECMAScript也提供了三種基本包裝類型:Number、String、Boolean。
我們常常寫類似這樣的程式碼,基本型別的變數可以當做物件一樣呼叫屬性、方法,但這又不是一個真正的物件只是一個變數而已,那麼這是為什麼呢?
1 var str = "hello world"; 2 console.log(str.length); // 11 3 console.log(str.toUpperCase());// HELLO WORLD
其實為了方便操作基本資料型別的值,JavaScript 中的基本資料型別的值會在背景建立對應的基本包裝類型物件,除了null 和undefined 所有的基本類型都有對應的包裝類型。
如上程式碼,後台會自動完成下列的處理:
執行到第二行時:
建立String 類型的一個實例;
在實例上呼叫指定的屬性;
銷毀這個實例;
執行到第三行時:
建立String 類型的一個實例;
在實例上呼叫指定的方法;
銷毀這個實例;
可以將以上三個步驟想像成是執行了下列ECMAScript程式碼:
##
1 // 执行到第二行时 2 var str = new String("hello world"); 3 str.length; 4 str = null; 5 6 // 执行到第三行时 7 var str = new String("hello world"); 8 str.toUpperCase(); 9 str = null;這樣以上程式碼中字串就變得跟物件一樣了,同理分別適用與Boolean、Number型別對應的基本資料型別;
現在是不是明白原來這個基本包裝類型其實就是基本資料型別對應的型別
String | |
Number | |
Boolean |
#注意:
並不是包裝類型提供了方法,而是javascript 引擎後台創建了對應基本包裝類型的實例(對象)
每當讀取一個基本型別值的時候,後台就會建立一個對應的基本包裝類型物件如:
1 var str = new String("hello world"); 2 str.length; 3 str = null;引用類型物件與基本包裝類型物件的區別#主要差異就是這兩個物件的生命週期不同。 透過以上程式碼區塊我們知道基本包裝類型自動建立的物件在物件被呼叫的時刻存在,調用完後就被銷毀了,而使用new關鍵字建立的參考類型的實例,物件在當前作用域都存在。
s='some' s.age='Joel' console.log(s.age);如上程式碼在為字串s新增age屬性,但當程式碼執行到第三行時name屬性已經被銷毀了,當程式碼執行第三行時,又建立了一個String 實例,但是這個實例並沒有age屬性所以輸出undefined;
#
s= String('some' s.age='Joel' console.log(s.age);總結#1、每個基本資料型別都映射到同名的基本包裝類型(除了null、undefined)。
2、在讀取基本類型值時,就會建立對應的基本包裝類型對象,從而方便了資料操作。
3、操作基本包裝類別的物件一執行完畢,就會立即銷毀。
以上是JavaScript中關於基本包裝型別的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!