Es6 class" this"在requestAnimationFrame的回调?

时间:2018-03-09 16:05:46

标签: javascript ecmascript-6

我在ES6类中使用requestAnimationFrame,例如

 class MyClass{...

     run(){
         requestAnimationFrame(this.animate);
         //also tried requestAnimationFrame(() => this.animate);
     }

     animate(){
        //how to get I back "this" here
     }

我无法找回"这个"在requestAnimationFrame的回调中。知道怎么做吗?

2 个答案:

答案 0 :(得分:6)

 requestAnimationFrame(() => this.animate());

 requestAnimationFrame(this.animate.bind(this));

在js的未来版本(目前为第3阶段)中,您可以:

 class MyClass {
   run(){
     requestAnimationFrame(this.animate);         
   }

   animate = () => {
     //..      
   }
}

答案 1 :(得分:1)

Jonas W.的答案是要走的路。您还可以在构造函数中绑定方法,如下所示:

class MyClass {
  constructor() {
    super();
    this.run = this.run.bind(this);
    this.animate = this.animate.bind(this);
  }
}