JavaScript 中的setTimeout() 第一个参数作用域

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"]


js

function bb(){alert("bb")}; var aa=function(){ this.aa=0; this.fuc=function(arg){ alert(arg);aa=arg;window.setTimeout(this.bb,1000);}; this.fuc1=function(arg){ alert(arg);aa=arg;window.setTimeout(bb,1000);}; this.bb=function(arg){alert("cc")}; }; var a1=new aa(); a1.fuc(4); a1.fuc1(3);


[/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]