我在Javascript中有一个旧类,我想在没有完整子类的情况下利用另一个旧类的行为。像这样:
function Foo(x) {
this.x = x;
}
Foo.prototype.add1 = function() {
return this.x + 1
}
function Bar(n) {
this.x = 2*n;
}
Bar.prototype.add1 = function() {
// steal behavior from Foo.add1
return Foo.prototype.add1.call(this);
}
这在浏览器控制台中可以正常工作:
> b = new Bar(3)
Bar {x: 6}
> b.add1()
7
是否可以使用bind
代替?
function Bar(n) {
this.x = 2*n;
}
Bar.prototype.add1 = Foo.prototype.add1.bind(xyz);
除了在对象实际存在之前没有xyz
可以使用的“ this”对象之外。
以下代码有效,但似乎不对。...
function Bar(n) {
this.x = 2*n;
this.add1 = Foo.prototype.add1.bind(this);
}
设置老式类的原型时,是否可以通过这种方式使用bind
?
答案 0 :(得分:1)
您无需使用bind
,只需分配Bar.prototype.add1 = Foo.prototype.add1
。 bind
方法对于类而非类的实例很有用。