
存取屬性的時候,原始/字面值會被轉換成物件
不要對這個事實感到疑惑:你可以將字串、數字與布林字面值視為具有屬性的物件 [例如
true.toString()
]。當你將這些原始值當成物件,並且試著存取它的屬性時,JavaScript
會從原始值的建構式建立一個包裝物件,讓你可以存取這個包裝物件的屬性與方法。在你
完成屬性存取之後,包裝物件就會被捨棄。透過這種轉換方式,在我們編寫的程式中,原
始值就如同物件一般。事實上,當原始值被視為物件時,JavaScript 會將它轉換成物件,
讓你可以存取它的屬性,並且在它回傳值之後將它變回原始值。你需要瞭解的重點在於整
件事的過程,以及 JavaScript 在幕後為你完成了這件事。
字串:
Live Code(http://jsfiddle. net/javascript enlightenment/ kpfNk/ )
<!DOCTYPE html><html lang="en"><body><script>
// 字串物件被視為物件
var stringObject = new String('foo');
console.log(stringObject.length); // log 3
console.log(stringObject['length']); // log 3
// 當字面值/原始字串被視為物件時,它會轉換成物件
var stringLiteral = 'foo';
console.log(stringLiteral.length); // log ...