我想通过将方法从类解析为函数来向数组添加值。例课程:class Foo { constructor() { this.arr = []; } add(value) { this.arr.push(value); }}用法:let foo = new Foo();a(foo.add, "a String");function a(func, value) { func(value);}
3 回答

一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
函数未绑定到对象,这意味着变量取决于其上下文。addthis
如果您这样做
constructor() {
this.arr = [];
this.add = this.add.bind(this);
}
它将替换未绑定到新实例的 add,无论您在哪里调用它,它都会引用此实例。
或者在ES6中,你可以这样做,这与我前面的示例相同,但在引擎盖下。
add = (value) => {
this.arr.push(value);
}

繁星淼淼
TA贡献1775条经验 获得超11个赞
在构造函数中,您需要将 add 函数绑定到该类。
this.add = this.add.bind(this);
此外,您需要引用 arr 变量。this.arr.push
这保留了Foo实例的上下文。
添加回答
举报
0/150
提交
取消