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();