Azm*_*sov 2 javascript object prototype-programming
这是一个对象:
var obj = new function(){
this.prop = {};
}
Run Code Online (Sandbox Code Playgroud)
我尝试做类似的事情:
obj.prop.prototype["new_attr"] = "some_value";
我想做的是永久修改obj.prop以包含新属性.根据我的理解,所有"对象"都有原型,但JavaScript告诉我prop没有原型.
也许我采取了错误的方法(试图永久修改prop),但我至少想知道为什么上面的代码不起作用.
通常,您可以prototype从构造函数访问该对象,但您也可以从对象获取它,但不能使用它.prototype.
获取对象的原型对象的非官方方式(在所有浏览器中不支持)与__proto__属性一起使用.(我相信它在支持(ed)它的浏览器中已被弃用).
获取对象的原型对象的官方ECMAScript 5方式(在所有浏览器中也不支持)是使用的Object.getPrototypeOf().
在你的情况下.prop引用一个对象文字,所以你已经知道原型是Object.prototype.
Object.getPrototypeOf( {} ) === Object.prototype; // true
Run Code Online (Sandbox Code Playgroud)
请注意,扩展几乎总是一个坏主意Object.prototype.
"也许我采取了错误的方法(试图永久修改道具),但我至少想知道为什么上面的代码不起作用."
如果您只是想修改引用的对象.prop,那么只需执行以下操作:
obj.prop.new_attr = "some_value";
Run Code Online (Sandbox Code Playgroud)