我正在读一本书,名为《有效的JavaScript:利用JavaScript的力量的68种特定方法》,第4点更喜欢基元而不是对象包装,并且碰到了这句话。
在基元上获取和设置属性会隐式创建对象包装器
这会创建对象包装吗?
"hello".someProperty = 17;
编辑
如果以上语句创建了一个对象,请解释此行为。
var test = "foo";
test.bar = "new prop";
test.bar //this prints undefined.
"hello".someProperty = 17;
上面的语句确实创建了一个对象包装器,但是一旦完成其任务就将其丢弃。
var hello = 'Hello';
hello.someProperty = 17;
console.log(hello.someProperty);
这就解释了为什么尝试为基元分配属性不起作用,但是也不会引发错误。属性分配成功,但是该属性设置在包装对象上,该包装对象立即被销毁。因此,当您以后去查找该物业时,就什么也没有了。
在内部,this
基本类型为object
。
String.prototype.thisType = function () {
return typeof this;
};
var hello = "hello";
console.log(typeof hello);
console.log(hello.thisType());
在这里阅读更多
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句