QV库学习

window.qv = {
    pkg: function(name,fn) {
        var target = window,packageNS =name.split(".");
        //创建命名空间
        for(var index=0;index<packageNS.length - 1;index++){
            if (!(packageNS[index] in target)) {
                target[packageNS[index]] = {};
            }
            target = target[packageNS[index]];
        }
        //创建构造方法,来源于construct,这里要注意js的this对象的指向,this只有到最后方法执行的那一刻才能明确指向
        target[packageNS[index]] = function() {
            if (typeof(this.construct) == 'function') {
                this.construct.apply(this, arguments);
            }
        };
        //target[packageNS[index]]=new parent();
        fn.call(target[packageNS[index]].prototype);
    }
};

QV库的pkg方法,执行fn方法来创建name对象。

        qv.pkg('qq.vip.test', function(){
            _public=this;
            _public.construct=function(name){
                this.name=name
            }
            _public.show=function(){
                alert(this.name);
            };
        });
        new qq.vip.test("yinshen").show();

 

posted on 2013-03-13 23:37  西瓜SY  阅读(277)  评论(0编辑  收藏  举报