使用绑定来利用另一个Javascript类的方法

时间:2019-12-17 19:08:15

标签: javascript

我在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

1 个答案:

答案 0 :(得分:1)

您无需使用bind,只需分配Bar.prototype.add1 = Foo.prototype.add1bind方法对于类而非类的实例很有用。