Douglas Crockford在这里定义了他的寄生继承 。
我想使用这种继承模式,因为它简单明了,但我想调用超级方法而不定义 Crockford 调用的uber
函数,因为我不想修改 Object 的原型。我能怎么做?
我想要一些不错的语法,而不需要修改 Object……这可能吗?
Douglas Crockford在这里定义了他的寄生继承 。
我想使用这种继承模式,因为它简单明了,但我想调用超级方法而不定义 Crockford 调用的uber
函数,因为我不想修改 Object 的原型。我能怎么做?
我想要一些不错的语法,而不需要修改 Object……这可能吗?
在他的例子中,这个:
function ZParenizor2(value) {
var that = new Parenizor(value);
that.toString = function () {
if (this.getValue()) {
return this.uber('toString');
}
return "-0-"
};
return that;
}
会变成这样:
function ZParenizor2(value) {
var that = new Parenizor(value);
that.toString = function () {
if (this.getValue()) {
return Parenizor.prototype.toString.apply(this, arguments);
}
return "-0-"
};
return that;
}
- 编辑 -
另一方面,您也可以简单地定义一个名为 BaseObject 的新类,在其上定义所有基本扩展方法(例如“uber”),然后以此为基础创建对象层次结构。