作为对象字段的参数传递的类方法的范围

时间:2018-07-19 17:33:33

标签: javascript object scope

我正在使用这个ShowButton类,该类在MainClass中实例化。 调用构造函数时,我正在传递函数this.display

这里的问题是,当我单击按钮并调用函数display()时,它返回的值是不确定的,它无法访问MainClass的this.name

当我调用`main.display()时,它会按预期返回“一些东西”,但是从我给ShowButton类提供的引用中调用它,则失败。

为什么会这样?我该如何解决?

class MainClass {
    constructor() {
        this.playButton = new ShowButton(this.display);
        this.name = "some stuff";
    }

    display() {
        console.log("calling display()");
        console.log(this.name);
    }
}

class ShowButton {
    constructor(aPlayFunction) {
    this.x = 100;
    this.y = 100;
    this.button = document.createElement('playButton');
    this.button.innerHTML = 'play';
    this.button.onclick = aPlayFunction;
    document.body.appendChild(this.button);
    }
}
let main = new MainClass();

0 个答案:

没有答案