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)
    
    
  • 相关阅读:
    残缺的字符串
    [BZOJ3513: [MUTC2013]idiots]
    FFT感性瞎扯
    Quartz框架简介
    异常状态码总结
    【SSM】拦截器的原理、实现
    FastDFS实现文件上传下载实战
    分布式文件系统FastDFS设计原理(转)
    FastDFS简介
    【设计模式】观察者模式
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/2145952.html
Copyright © 2011-2022 走看看