Javascript 基元包裝類型

2018-01-10 16:22 更新

Javascript面向?qū)ο笤O(shè)計 - JavaScript基元包裝類型


有三種基元包裝類型:String,Number和Boolean。

它們是存在用于處理原始值的引用類型。

在讀取字符串,數(shù)字或布爾值時,會在幕后自動創(chuàng)建原始包裝類型。

我們可以創(chuàng)建一個原始字符串值并將其賦給一個變量。 然后像一個對象一樣處理變量,并使用點符號調(diào)用其函數(shù)。

例子

var name = "Javascript"; 
var firstChar = name.charAt(0); 
console.log(firstChar);      

上面的代碼生成以下結(jié)果。


注意

以下代碼是幕后發(fā)生的:

var name = "Javascript"; 
var temp = new String(name); 
var firstChar = temp.charAt(0); 
temp = null; 
console.log(firstChar);   

要測試這一點,請嘗試向字符串添加屬性,就像它是常規(guī)對象一樣:

var name = "Javascript"; 
name.last = "CSS"; 

console.log(name.last);   // undefined 

上面的代碼生成以下結(jié)果。

上面的代碼嘗試將屬性 last 添加到字符串 name

當使用常規(guī)對象時,我們可以隨時添加屬性。

使用原語wrapper類型,屬性消失,因為對象上屬性被分配后立即被銷毀。

這里是JavaScript引擎中實際發(fā)生的事情:

// what the JavaScript engine does 
var name = "Javascript"; 
var temp = new String(name); 
temp.last = "CSS"; 
temp = null;                            // temporary object destroyed 

var temp = new String(name); 
console.log(temp.last);                 // undefined 
temp = null; 

雖然對原始值自動創(chuàng)建引用值,但這些值的 instanceof 返回false:

var name = "Javascript"; 
var count = 10; 
var found = false; 

console.log(name instanceof String);    // false 
console.log(count instanceof Number);   // false 
console.log(found instanceof Boolean);  // false 

上面的代碼生成以下結(jié)果。

instanceof運算符返回false,因為只有在讀取值時才創(chuàng)建臨時對象。

注意

我們可以創(chuàng)建原始包裝器  類型手動,但有一定的副作用:

var name = new String("Javascript"); 
var count = new Number(10); 
var found = new Boolean(false); 

console.log(typeof name);           // "object" 
console.log(typeof count);          // "object" 
console.log(typeof found);          // "object" 

上面的代碼生成以下結(jié)果。

我們不能使用String,Number和Boolean對象將原始值。

例如,以下代碼使用Boolean對象。


var found = new Boolean(false); 
if (found) { 
   console.log("Found");       // this executes 
} else{
   console.log("Not Found");       // this executes 
}

上面的代碼生成以下結(jié)果。

布爾對象是 false ,但 if(found) return true 。

對象表示為false沒有關(guān)系; 它是一個對象,所以它的最終計算結(jié)果為true。

我們應(yīng)該避免在代碼中創(chuàng)建基元包裝類型。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號