zoukankan      html  css  js  c++  java
  • javascript 让实例的方法都异步执行

    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)
    
    
  • 相关阅读:
    Tsql 获取服务器信息
    数据字典生成脚本 【转载】
    c# winform文本框数字,数值校验
    ReentrantLock和AbstractQueuedSynchronizer的分析
    多线程
    前缀和与差分数组
    链表
    堆(优先队列)
    排序算法
    二分查找(递归和非递归)
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/2145952.html
Copyright © 2011-2022 走看看