如何将函数绑定到类以打印自定义文本和对象属性?



我想了解bind()是如何工作的。在我的JS脚本中,我想创建一个矩形类的实例,然后调用一个函数,该函数使用bind()函数打印文本,后跟矩形的属性。我有:

class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
getWidth() {
return this.width;
}
}
let Rectangle1 = new Rectangle(10, 20);
function func1(text) {
console.log(`${text} + ${this.getWidth()}`)
}
let func2 = (text) => {
func1.bind(Rectangle1, text)
}
func2('Rectangle width is: ')

关键是我希望能够调用一个只包含开始文本的函数(func2)。

当前这段代码不打印任何东西。

我错过了什么?

解决方案:

bind()返回一个新函数。所以func1.bind(Rectangle1, text)没有执行func1的绑定版本,它只是返回func1的绑定版本。

解决方案是将func1.bind(Rectangle1, text)更改为func1.bind(Rectangle1)(text),以text作为输入参数调用func1的绑定版本。

感谢@Pointy @Bergi和@James的帮助。

const func2 = (text) => {
func1.call(rectangle1, text);
};

const func2 = func1.bind(rectangle1);

参见call和apply的区别。

相关内容

  • 没有找到相关文章

最新更新