假设我只想使用(不是构造函数)。我有一个这样的对象:
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
OR
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
将自动添加到这些更改后创建的每个对象中。但是如何使用对象字面量获得相同的效果呢?
请提供最简单的解决方案,该解决方案具有简洁的语法。我只是想知道是否可以手动完成此操作。我不想使用非标准的__proto__ https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/proto关键字也可以。
我搜索过 Stackoverflow,这并不是以下问题的重复:
- 将原型添加到 JavaScript 对象文字 https://stackoverflow.com/questions/1592384/adding-prototype-to-object-literal
- 将原型添加到对象字面量 https://stackoverflow.com/questions/3452414/adding-a-prototype-to-an-object-literal
因为我想在创建后以标准方式更改原型(如果可能的话)。就像是Object.setPrototype()
就完美了,但是这个功能不存在!是否有其他方法可以简单地设置使用对象文字初始化创建的对象的原型?