JavaScript多重继承和instanceof

时间:2013-01-29 01:48:56

标签: javascript inheritance prototype multiple-inheritance ecmascript-5

  

可能重复:
  Javascript multiple inheritance

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的实例?

1 个答案:

答案 0 :(得分:7)

JavaScript没有多重继承。 instanceof测试原型链,这是线性的。但是,您可以使用mixins,这基本上就是您使用Foo.call(this); Bar.call(this)所做的事情。但它不是继承;在Object.create中,第二个参数仅提供要复制的属性,而不是父级。