3

我观察到通过在 Javascript 中使用“原型”属性(并间接建立原型链),可以在 JavaScript 中实现多级继承。但是是否可以通过某种方式在 Javascript 中实现多重继承?任何简单的例子都会很棒。

4

3 回答 3

5

要实现简单的继承,您通常会这样做

MyClass.prototype = new MySuperClass();

但您也可以复制另一个“类”的内容:

MyClass.prototype = new MySuperClass();
var myOtherSuperClass = new MyOtherSuperClass();
for (var key in myOtherSuperClass) {
     MyClass.prototype[key] = myOtherSuperClass[key];
}

当然,您可以使用像jQuery.extend这样的实用程序来做到这一点,或者自己动手做。

一个限制是instanceof不会检测到MyOtherSuperClass.

于 2013-03-18T09:31:16.190 回答
1

需要明确的是,JS 没有多重继承。

每个对象只能有一个原型。

然而,由于一切都是可变的,它可以支持“混合”,这就是扩展方法的全部内容。他们只是将一个对象的键复制到另一个对象。不过,这实际上不是继承。通常,在该方案中,生成的对象将只有一个proto,即 Object.

于 2013-04-20T21:23:48.417 回答
1

在 JavaScript 中实现多重继承是可能的,尽管很少有库能做到。我知道的唯一例子是Ring.js

当然它不仅仅依赖于原型,所以instanceof不起作用。但是图书馆提供了一个替代品,所以这没什么大不了的。

于 2013-07-13T12:54:18.760 回答