这是一个对象:
var obj = new function(){
this.prop = {};
}
我尝试做类似的事情:
obj.prop.prototype["new_attr"] = "some_value";
我想做的是永久修改obj.prop
包含新属性。据我了解,所有“对象”都有原型,但 JavaScript 告诉我prop
没有原型。
也许我采取了错误的方法(试图永久修改prop
),但我至少想知道为什么上面的代码不起作用。
通常您访问prototype
从构造函数中获取对象,但您也可以从对象中获取它,但不使用.prototype
.
获取对象原型对象的非官方方法(并非所有浏览器都支持)是使用__proto__
财产。 (我相信它在支持它的浏览器中已被弃用)。
官方 ECMAScript 5 获取对象原型对象的方式(也不是所有浏览器都支持)是使用Object.getPrototypeOf()
.
在你的情况下.prop
正在引用对象文字,因此您已经知道原型是Object.prototype
.
Object.getPrototypeOf( {} ) === Object.prototype; // true
请注意,扩展几乎总是一个坏主意Object.prototype
.
“也许我采取了错误的方法(试图永久修改 prop),但我至少想知道为什么上面的代码不起作用。”
如果您只是想修改引用的对象.prop
,然后只需执行以下操作:
obj.prop.new_attr = "some_value";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)