javascript - 使用 bind 来利用另一个 Javascript 类的方法

标签 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);
}

有没有办法在设置旧式类的原型(prototype)时以这种方式使用bind

最佳答案

您不需要使用bind,只需分配Bar.prototype.add1 = Foo.prototype.add1bind 方法对实例有用,对类不有用。

关于javascript - 使用 bind 来利用另一个 Javascript 类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59380621/

相关文章:

javascript - 在 Designer 上的 Polymer 中使用核心动画页面

javascript - 使用第一个对象的值在第二个对象中查找对应的值

javascript - 如何通过 jquery 访问 View 中动态添加的元素

javascript - 使用 R 导出期刊文章的引文

javascript - 检查脚本加载后是否经过 5 分钟

javascript stopPropagation() 阻止函数触发

javascript - 比较与 Canvas 平行的两个图像的颜色值

javascript - Chart.JS 条形图鼠标悬停和鼠标移出事件?

javascript - 制表符在运行更改器(mutator)后运行验证器

javascript - 为什么我的嵌套 React 组件不渲染?