var aa=function(){ var aa=0; //this.fuc=function(arg){aa=arg;var obj=this;setTimeout.call(obj,"bb();",1000);}; this.fuc=function(arg){aa=arg;var obj=this;setTimeout.("bb();",1000);}; this.bb=function(){alert(aa)}; //this.setTimeout=window.setTimeout; }; var ff; var a1=new aa(); var a2=new aa(); a2.fuc(4); a1.fuc(3);
setTimeout的第一个参数“bb()” 想调用当前aa的实例的bb方法,怎样才能setTimeout成功。如果使用注释掉的方法,ff的错误提示是:Illegal operation on WrappedNative prototype object。
还是说不能这么做,setTimeout第一个参数的执行的语句是在window域下的静态代码。
那还有什么方法可以达到,一段时间后调用函数?
[quote]火狐和ie都是undefined[/quote]
我用的是chrome,这个。。。可能是兼容性问题吧,按道理js定义内部变量用this.xxx和var xxx都可以的。不过setTimeOut能用就OK拉
setTimeout(bb,1000);
[code="java"]
[/code]
setTimeout是一段时间后执行对应的函数,只执行一次
还有一个,setInterval使用方法与setTimeout 相似,功能是重复执行表达式
[quote]执行后是undefine,undefine. [/quote]
。。。。。。。。。无奈,我这边正确执行的,一点问题都没有。。。。。。。不过调用setTimeout,要用
[code="java"]window.setTimeout(函数名,10000);[/code]
另外,window.setInterval()和setTimeout的用法一模一样的,只不过是每隔多少时间执行一次
[code="java"]
var intervalID = window.setInterval(函数名,10000);
window.clearTimeout(intervalID); //停止循环执行
[/code]