我是一个疯狂的问题。我从类中实例化一个对象。然后我想将一个函数从这个对象传递给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
答案 0 :(得分:1)
解决方法是:使用其他函数包装它而不是直接调用方法
function doKeyDown(e){
var instance = new Class(e.keyCode);
setInterval(function(){
instance.functionToBeExecuded()
}, 200);
}
这会产生许多输出:
Class {functionToBeExecuded: function}