我正在尝试测试是否可以在使用文字创建两个对象之后使一个对象继承自另一个对象。我试图将构造函数和原型相互瞄准,但似乎无论如何,我想要解决这个问题的唯一方法是使用一个已有的对象构建一个新对象。如果我',请告诉我我错了。这是我尝试解决问题的快速尝试。
Object.relate = function(parent, child){
function F(){};
F.prototype = parent;
child.constructor = F;
}
alpha = {a:1};
beta = {b:2};
Object.relate(alpha, beta);
答案 0 :(得分:0)
此方法似乎对我有用(在Chrome中测试):
function relate(parent, child){
child.__proto__ = parent;
}
alpha = {a:1};
beta = {b:2};
relate(alpha, beta);
console.log(beta.a);
输出:'1'。
答案 1 :(得分:0)
在您的代码beta
中,您可以使用alpha
访问beta.constructor.prototype
上定义的属性。
在
等功能上使用new
时
var obj = new F();
然后obj.__proto__
自动设置为F.prototype
。如果您已有现有对象且未使用new
创建对象,则必须自行设置__proto__
。
obj.__proto__ = F.prototype;
因此,在您的示例中,您需要调用
child.__proto__ = parent;
资源:
问题是现在每个浏览器都公开__proto__
属性。 IE不支持它,因此如果不实际创建新对象并复制属性,则无法创建与浏览器兼容的解决方案。