鉴于这段代码:
var SuperClass = function(a, b) {
this.a = a;
this.b = b;
};
SuperClass.prototype.getA = function() {
return this.a;
};
var SubClass = function(a, b, c) {
SuperClass.call(this, a, b);
this.c = c;
};
为了启动SubClass
原型,大多数建议似乎如下:
SubClass.prototype = new SuperClass();
对我来说创建(实例化)一个新SuperClass
对象(具有自己的属性a
和b
属性)只是为了作为SubClass
.
这也有效:
// anti-pattern
SubClass.prototype = SuperClass.prototype;
但它通过SuperClass.prototype
引用传递对象,因此您添加到的任何内容SubClass.prototype
也会添加到SuperClass.prototype
,因为它们是同一个对象。在大多数情况下,这不是预期的行为。
SuperClass
问题:有没有一种方法可以在不创建 的实例作为基本原型的情况下实现正确的原型SubClass
设计?