您的位置:首页 > Web前端 > JavaScript

javascript 让实例的方法都异步执行

2011-09-13 10:30 591 查看
var C = function(){
this._methodList = [];
}
C.prototype.fire = function(obj){
var instance = this;
while(obj = this._methodList.shift()){
if(isFinite(obj.fn)){
var time = new Date;
instance.timeoutID = setTimeout(function(){
instance.fire();
instance._delayTime = new Date - time;
},obj.fn);
break;
}else{
this._result = obj.fn.apply(instance,obj.args)
}
}
}
C.prototype.wait = function(ms){
this._methodList.push({
fn:ms
});
return this;
}
C.prototype.abort = function(){
createTimeout(this.timeoutID);
this.fire();
}
C.extend = function(name,body){
if(typeof name === "object"){
for(var i in name){
if(name[i] !== void 0){
C.extend(i, name[i])
}
}
}else{
if(typeof body === "function"){
var method = C.prototype[name] = function(){
var obj = {
args:arguments,
fn:body
}
this._methodList.push(obj);
this.fire();
return this._result !== void 0 ? this : this;
}
method.toString = function(){
return body+"";
}
}else{
this.prototype[name] = body;
}
}
return this;
}
C.extend({
aaa:33,
attr:function(prop){
return this[prop];
},
getName:function(){
return this.name;
},
setName:function(name){
this.name = name;
}

});

var c = new C;
console.log(c);
c.attr(aaa);
c.setName("司徒正美").wait(1000).getName();
console.log(c.name);
console.log(c.setName)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: