假设我只想使用对象文字(而不是构造函数)。我有一个这样的对象:
var o = {
name : "Jack"
}
如果我想创建另一个对象,它的原型是o
我使用这个语法:
var u = Object.create( o );
console.log( u.name );//prints Jack
u.name = "Jill";
console.log( u.name );//prints Jill
工作正常!没问题。但是现在在运行时我想将原型更改u
为其他东西。如果u
是使用这样的构造函数创建的:
function U () {}
U.prototype.name = "Jack";
var u = new U;
console.log( u.name );//prints Jack
或者
function U () {
this.name = "Jack";
}
var u = new U;
console.log( u.name );//prints Jack
但是当使用构造函数时,我可以完全改变原型:
function U () {}
//totally changed the prototype object to another object
U.prototype = {
dad : "Adam"
}
var u = new U;
console.log( u.dad );//prints Adam
然后,我添加到原型中的任何内容U
都会自动添加到在这些更改之后创建的每个对象中。但是如何使用 Object 字面量获得相同的效果?
请提供语法简洁的最简单的解决方案。我只想知道是否可以手动执行此操作。我也不想使用非标准__proto__
关键字。
我搜索了 Stackoverflow,这实际上并不是以下问题的重复:
因为我想在创建后以标准方式更改原型(如果可能的话)。类似的东西Object.setPrototype()
会很完美,但那个功能不存在!有没有其他方法可以简单地设置使用对象字面量初始化创建的对象的原型?