JavaScript:修改对象的原型';什么是变量?
这是一个对象:JavaScript:修改对象的原型';什么是变量?,javascript,object,prototype-programming,Javascript,Object,Prototype Programming,这是一个对象: var obj = new function(){ this.prop = {}; } 我试着做这样的事情: obj.prop.prototype[“新属性”]=“某些值” 我想做的是永久性地修改obj.prop以包含新属性。据我所知,所有“对象”都有原型,但JavaScript告诉我prop没有原型 也许我采取了错误的方法(试图永久修改prop),但我至少想知道为什么上面的代码不起作用。你可以完成你想做的事情,但你需要将prop对象添加到构造函数原型中: var Ob
var obj = new function(){
this.prop = {};
}
我试着做这样的事情:obj.prop.prototype[“新属性”]=“某些值”代码>
我想做的是永久性地修改obj.prop
以包含新属性。据我所知,所有“对象”都有原型,但JavaScript告诉我prop
没有原型
也许我采取了错误的方法(试图永久修改prop
),但我至少想知道为什么上面的代码不起作用。你可以完成你想做的事情,但你需要将prop对象添加到构造函数原型中:
var Obj = function() {};
Obj.prototype.prop = { bar: 'bar value' };
var obj_1 = new Obj();
console.log(obj_1.prop.bar); //bar value
obj_1.prop.foo = 'foo value';
var obj_2 = new Obj();
console.log(obj_2.prop.foo); //foo value
通常,您可以从构造函数中访问prototype
对象,但也可以从对象中获取,但不能使用.prototype
Object.getPrototypeOf( {} ) === Object.prototype; // true
获取对象的原型对象的非官方方式(并非所有浏览器都支持)是使用\uuu proto\uu
属性。(我相信在支持它的浏览器中,它是不推荐的)
获取对象原型对象的官方ECMAScript 5方法(并非所有浏览器都支持)是使用object.getPrototypeOf()
在您的例子中,.prop
引用了一个对象文本,因此您已经知道原型是object.prototype
Object.getPrototypeOf( {} ) === Object.prototype; // true
请注意,扩展Object.prototype
几乎总是一个坏主意
Object.getPrototypeOf( {} ) === Object.prototype; // true
“也许我采取了错误的方法(试图永久修改prop),但我至少想知道上面的代码为什么不起作用。”
如果您只是试图修改.prop
引用的对象,只需执行以下操作:
obj.prop.new_attr = "some_value";
因为prop属性为空。在修改object.prop之前,需要先将prop初始化为默认值
请参阅以下参考资料:
嗯。干杯