实例化一个类,然后将其传递给setInterval

时间:2015-03-15 20:36:29

标签: javascript scope setinterval

我是一个疯狂的问题。我从类中实例化一个对象。然后我想将一个函数从这个对象传递给setInterval函数。使用keyDown事件执行整个代码块。 这是代码:

  function doKeyDown(e){
      var instance = new Class(e.keyCode);
      setInterval(instance.functionToBeExecuded(), 200);
  }

奇怪的是,它被执行了一次,然后开始循环一个错误状态(firebug): 27

SyntaxError: missing ] after element list


[object HTMLAudioElement]

为了完整起见:

Class.prototype.functionToBeExecuded = function(){
 var node = document.createElement("audio");
 //the key is stored in the object (from the Class's constructor)
 node.setAttribute("key", this.variable);
}

有人看到有些失败吗?

提前致谢! =)

P.S。:这不重复因为我没有遇到函数,function()错误。如果我用(instance.functionToBeExecuded,200)执行它,它什么也没发生。

到目前为止我发现的问题是问题必定在某种程度上。如果我这样做:

  function doKeyDown(e){
      var instance = new Class(e.keyCode);
      setInterval(instance.functionToBeExecuded, 200);
  }

Class.prototype.functionToBeExecuded = function(){
 console.log(this);
 var node = document.createElement("audio");
 //the key is stored in the object (from the Class's constructor)
 node.setAttribute("key", this.variable);
}

我正在使用" window"获得循环控制台输出。因此该函数在窗口的范围内执行。但为什么?以及如何解决?

控制台输出:

Window index.html

1 个答案:

答案 0 :(得分:1)

解决方法是:使用其他函数包装它而不是直接调用方法

function doKeyDown(e){
  var instance = new Class(e.keyCode);
  setInterval(function(){
    instance.functionToBeExecuded()
  }, 200);
}

这会产生许多输出:

Class {functionToBeExecuded: function}