不要对字符串、数字和布尔文字可以被视为具有属性的对象这一事实感到困惑(例如,true.toString())。当这些基元值通过尝试访问其属性而被视为对象时,JavaScript将从基元的关联构造函数创建一个包装器对象,以便可以访问包装器对象的属性和方法。
一旦访问了属性,包装器对象就会被丢弃。这种转换允许我们编写代码,使其看起来好像原始值实际上是一个对象。说实话,当它在代码中被视为对象时,JavaScript会将其转换为对象,以便属性访问可以工作,然后在返回值后将其转换回原始值。这里需要注意的关键是正在发生的事情,而JavaScript正在幕后为您做这件事。
原始值样本
这里有一些示例来演示我正在谈论的内容:
字符串示例:sample56.html
cript;toolbal:false;"><!DOCTYPEhtml><htmllang="en"><body><script>//Stringobjecttreatedlikeanobject.varstringObject=newString('foo');console.log(stringObject.length);//Logs3.console.log(stringObject['length']);//Logs3.//Stringliteral/primitiveconvertedtoanobjectwhentreatedasanobject.varstringLiteral='foo';console.log(stringLiteral.length);//Logs3.console.log(stringLiteral['length']);//Logs3.console.log('bar'.length);//Logs3.console.log('bar'['length']);//Logs3.</script></body></html>