JavaScript中是否有办法执行此操作:
Foo = function() {
};
Bar = function() {
};
Baz = function() {
Foo.call(this);
Bar.call(this);
};
Baz.prototype = Object.create(Foo.prototype, Bar.prototype);
var b = new Baz();
console.log(b);
console.log(b instanceof Foo);
console.log(b instanceof Bar);
console.log(b instanceof Baz);
那么Baz既是Foo又是Bar的实例?
答案 0 :(得分:7)
JavaScript没有多重继承。 instanceof
测试原型链,这是线性的。但是,您可以使用mixins,这基本上就是您使用Foo.call(this); Bar.call(this)
所做的事情。但它不是继承;在Object.create
中,第二个参数仅提供要复制的属性,而不是父级。