猿问

javascript 这是在方法中未定义的

我想通过将方法从类解析为函数来向数组添加值。


课程:


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);

}


ITMISS
浏览 99回答 3
3回答

一只名叫tom的猫

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

繁星淼淼

在构造函数中,您需要将 add 函数绑定到该类。this.add = this.add.bind(this);此外,您需要引用 arr 变量。this.arr.push这保留了Foo实例的上下文。

千万里不及你

使用箭头功能防止自动绑定add = (value) => {...}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答