bind()的优雅和高性能替代品

时间:2016-12-04 17:59:01

标签: javascript performance

我目前偶然发现了bind的问题,我认为这会降低我的性能。在每次递归时调用bind似乎都很糟糕。

我目前正在寻找一种处理这种情况的优雅而高效的方式:

在这种情况下,什么是理想的?

class AlotMonster {
    constructor() {
        this.names = ['a lot', 'alot'];
        this.method();
      }

    method() {
        let choice = Math.round(Math.random());
        let currentName = this.names[choice];

        console.log(currentName);

        requestAnimationFrame(this.method.bind(this));
      }
}

new AlotMonster();

1 个答案:

答案 0 :(得分:1)

您可以改为使用箭头函数,它具有词法this绑定。它看起来并不像您正在利用您的方法的原型性质,并希望它无论如何都要与特定实例相关:

class AlotMonster {
    constructor() {
        this.names = ['a lot', 'alot'];

        this.method = () => {
            let choice = Math.round(Math.random());
            let currentName = this.names[choice];

            console.log(currentName);

            requestAnimationFrame(this.method);
        };  

        this.method();
    }
}

new AlotMonster();