我在javascript中编写了一个类似于以下内容的类:
function main()
{
this.var1 =0;
this.clock = function()
{
var t = this;
var n =1;
window.setInterval(document.write(this.n++),1000);
}
}
但是在调用setInterval()之后'this'指的是窗口。所以我无法访问类中的变量。我该如何解决这个范围问题?
答案 0 :(得分:5)
function main()
{
this.var1 =0;
this.clock = function()
{
var t = this;
var n = 1;
window.setInterval(function(){ document.write(n++); },1000);
}
}
请注意,您的代码包含在function
。
答案 1 :(得分:2)
首先,您的setInterval
没有按照您的想法行事。您正在document.write(this.n++)
的 结果 上执行setInterval。写入立即发生,只会发射一次。
代码应该是:
setInterval(function(){
document.write(n++);
}, 1000);
setInterval采用函数执行每n
ms。该函数的范围可以访问您的n
变量,因此您不需要this
答案 2 :(得分:1)
function main()
{
this.var1 =0;
this.clock = function()
{
var t = this;
var n = 1;
window.setInterval(function(){ document.write( t.n++); },1000);
}
}
您已宣布t
,请使用它!所有人都是正确的,使用函数语句,但是在范围内使用n
使用t
。
答案 3 :(得分:0)
document.write ....现在那是老派。请改为document.write(main.n++)
?