这个例子可以被认为是javascript中的多重继承吗。。?
我听说JavaScript不支持多重继承 下面的例子是否可以被视为多重继承?如果没有,那么任何人都可以解释为什么这个例子可以被认为是javascript中的多重继承吗。。?,javascript,inheritance,Javascript,Inheritance,我听说JavaScript不支持多重继承 下面的例子是否可以被视为多重继承?如果没有,那么任何人都可以解释为什么 function A () { this.a = 'a' }; function B () { this.b = 'b' }; function AB () { A.call(this); B.call(this); }; var obj = new AB(); console.dir(obj); //Output: {a: "a", b: "b"} 您所做的
function A () {
this.a = 'a'
};
function B () {
this.b = 'b'
};
function AB () {
A.call(this);
B.call(this);
};
var obj = new AB();
console.dir(obj);
//Output: {a: "a", b: "b"}
您所做的被称为组合,它通常是多重继承的替代方法 以下是一些可能对您有所帮助的参考资料
AB
(我从这里开始称之为C
)函数实际上并没有扩展A
,也没有扩展B
:
函数A(){
this.a='a';
}
函数B(){
this.b='b';
}
函数C(){
打电话(这个);
叫(这个);
}
a=新的a();
log('a是a',a的实例);
b=新的b();
log('b是b',b instanceof b);
c=新的c();
log('c是A',c是A的实例,'c是B',c是B的实例)代码>
下面的例子可以被认为是多重继承吗
没有
谁能解释一下原因吗
你的AB
(我从这里开始称之为C
)函数实际上并没有扩展A
,也没有扩展B
:
函数A(){
this.a='a';
}
函数B(){
this.b='b';
}
函数C(){
打电话(这个);
叫(这个);
}
a=新的a();
log('a是a',a的实例);
b=新的b();
log('b是b',b instanceof b);
c=新的c();
log('c是A',c是A的实例,'c是B',c是B的实例)代码>谢谢你的回答和即时回复谢谢你ZZBBOV你的答案和即时回复。非常感谢杰瑞米的回答。非常感谢杰瑞米的回答。1/2::由于以下原因,我既不考虑问题,也不考虑2个答案为“主要基于意见”。首先,OP的问题直截了当地指向一个目标,并附有一个很好地选择的例子,因为它直接指出了看待这个问题的方式,特别是在JS中,它的函数是构造函数,原型链接到构造函数,上下文可以通过调用和应用委托给函数。(观点:因此OP的问题不应该像现在这样被否决。)。。。。。。2/2::其次,@zzzzBov将给定的示例更改了3次,以显示JS中基于函数的对象组合和构造函数与基于原型的继承之间的差异。第三,两种回答都认为构图可以被看作是多重继承的选择,这也不是一个不合理的意见。第二部分:由于以下原因,我既不考虑问题,也不考虑2个答案:“主要是基于意见的”。首先,OP的问题直截了当地指向一个目标,并附有一个很好地选择的例子,因为它直接指出了看待这个问题的方式,特别是在JS中,它的函数是构造函数,原型链接到构造函数,上下文可以通过调用和应用委托给函数。(观点:因此OP的问题不应该像现在这样被否决。)。。。。。。2/2::其次,@zzzzBov将给定的示例更改了3次,以显示JS中基于函数的对象组合和构造函数与基于原型的继承之间的差异。第三,两个答案都表明,组合可以被视为多重继承的替代品,这也不是一个不合理的观点。