requestAnimationFrame中的javascript范围

时间:2014-07-20 15:01:59

标签: javascript scope requestanimationframe

我想为动画制作一个选择选项,因此无论选择何种类型,都会在画布上显示。 所以我把每个动画都作为一个"类" :

(function (exports) {

  function animationA() {}
  animationA.prototype.init = function(){}
  animationA.prototype.draw = function(){}

  exports.animationA = animationA;
})(this);

然后在主要的js:

var a = new animationA();

  function setup() {
    a.init();
  }

  function update(callback) {
    requestAnimationFrame(function () {
      update(callback);
    });
    console.log(this);
    callback();
  }

  setup();
  update(a.draw);

我发现更新(a.draw)中发生错误。它无法访问此行代码中的a属性。 我想知道这是否是一个javascript范围问题?

感谢。

1 个答案:

答案 0 :(得分:0)

您需要在调用requestAnimationFrame之前创建对要在回调内引用的上下文的引用,就像使用普通事件回调一样。

Var that = this;

requestAnimationFrame(function(){

that.doSimething();

});