实例化一个 class 然后将它传递给 setInterval
Instantiating a class and then pass it to setInterval
我有一个疯狂的问题。我正在从 class 中实例化一个对象。然后我想将一个函数从此对象传递给 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, 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 的范围内执行。但为什么?以及如何解决?
控制台输出:
Window index.html
解决方法是:使用另一个函数包装它而不是直接调用方法
function doKeyDown(e){
var instance = new Class(e.keyCode);
setInterval(function(){
instance.functionToBeExecuded()
}, 200);
}
这将给出其中许多输出:
Class {functionToBeExecuded: function}
我有一个疯狂的问题。我正在从 class 中实例化一个对象。然后我想将一个函数从此对象传递给 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, 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 的范围内执行。但为什么?以及如何解决?
控制台输出:
Window index.html
解决方法是:使用另一个函数包装它而不是直接调用方法
function doKeyDown(e){
var instance = new Class(e.keyCode);
setInterval(function(){
instance.functionToBeExecuded()
}, 200);
}
这将给出其中许多输出:
Class {functionToBeExecuded: function}