在写JS脚本的时候写了类似如下的代码,总是产生莫名其妙的问题,定位不到。
function ClassName()

...{
var _Handle = null;
function IntervalFunction()

...{
alert("run IntervalFunction()");
window.clearInterval(_Handle);
_Handle = null;
}
_Handle = window.setInterval("IntervalFunction();", 1000);
}

var obj = new ClassName();
逐行注释代码,最后发现:window.setInterval()中加入的函数必须是全局函数,此处使用类的私有方法是不行的。修改代码成如下,解决问题:
function ClassName()

...{
var _Handle = null;
this.IntervalFunction = function()

...{
alert("run IntervalFunction()");
window.clearInterval(_Handle);
_Handle = null;
}
_Handle = window.setInterval("obj.IntervalFunction();", 1000);
}

var obj = new ClassName();
function ClassName()
...{
var _Handle = null;
function IntervalFunction()
...{
alert("run IntervalFunction()");
window.clearInterval(_Handle);
_Handle = null;
}
_Handle = window.setInterval("IntervalFunction();", 1000);
}
var obj = new ClassName();逐行注释代码,最后发现:window.setInterval()中加入的函数必须是全局函数,此处使用类的私有方法是不行的。修改代码成如下,解决问题:
function ClassName()
...{
var _Handle = null;
this.IntervalFunction = function()
...{
alert("run IntervalFunction()");
window.clearInterval(_Handle);
_Handle = null;
}
_Handle = window.setInterval("obj.IntervalFunction();", 1000);
}
var obj = new ClassName();
本文探讨了JavaScript中使用window.setInterval时遇到的问题,即无法直接调用类的私有方法作为定时任务函数。通过调整代码结构,将私有方法转为公开方法解决了这一难题。
1256

被折叠的 条评论
为什么被折叠?



