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