为了账号安全,请及时绑定邮箱和手机立即绑定

javascript 这是在方法中未定义的

javascript 这是在方法中未定义的

ITMISS 2022-08-27 10:49:10
我想通过将方法从类解析为函数来向数组添加值。例课程: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);

}


查看完整回答
反对 回复 2022-08-27
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

在构造函数中,您需要将 add 函数绑定到该类。

this.add = this.add.bind(this);

此外,您需要引用 arr 变量。this.arr.push

这保留了Foo实例的上下文。


查看完整回答
反对 回复 2022-08-27
?
千万里不及你

TA贡献1784条经验 获得超9个赞

使用箭头功能防止自动绑定add = (value) => {...}



查看完整回答
反对 回复 2022-08-27
  • 3 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号