var obj = function(){
this.status = 0,
this.init();
};
obj.prototype = {
init : function(){
return this.status=1;
}
};function test(){
var newobj = new obj();
if(newobj.status){
do...
}
}
这样竟然在ie6/chrome下无法执行test()里的if代码,我在var newobj = new obj();和init()里的return this.status=1;后面加了alert(...status)发现,先是0后是1,就是说,还未执行完newobj = new obj();已先读取了newobj.status。
天啊,我该如何判断newobj = new obj();已经执行完毕?!
this.status = 0,
this.init();
};
obj.prototype = {
init : function(){
return this.status=1;
}
};function test(){
var newobj = new obj();
if(newobj.status){
do...
}
}
这样竟然在ie6/chrome下无法执行test()里的if代码,我在var newobj = new obj();和init()里的return this.status=1;后面加了alert(...status)发现,先是0后是1,就是说,还未执行完newobj = new obj();已先读取了newobj.status。
天啊,我该如何判断newobj = new obj();已经执行完毕?!
this.status = 0,
this.init();
};
obj.prototype = {
init: function(){
return this.status=1;
}
};function test(){
var newobj = new obj();
if (newobj.status){
alert(1);
}
}test();
执行都很正常
但我加了settimeout后,问题来了:var obj = function(){
this.tt = 'a';
this.init();
};
obj.prototype = {
status : 0,
isok:false,
init: function(){
this.tt='b';
this.two();
},
two: function(){
var self = this;
var time = setTimeout(function(){self.status =1;},500);
this.isok = true;
}
};function test(){
var newobj = new obj();
var s='';
for(key in newobj){
if(typeof newobj[key]=='function') continue;
s +=key;
s +='==>'
s +=newobj[key];
s +='||';
}
alert(s);
}test();
tt==>||isok==>true||status==>0||,
但IE8执行的结果确是:status==>0||tt==>||isok==>true||个人觉得在LZ的程式里加不加setTimeOut('',500)没有影响,
执行顺序不同可能缘于浏览器的原因
下载完了对象的status才为1。后面我用函数递归来解决。但在IE下容易内存溢出。