js高级编程中命名空间的两种用法
第一種:
//?聲明一個全局對象Namespace,用來注冊命名空間
Namespace?=?new?Object();
//?全局對象僅僅存在register函數(shù),參數(shù)為名稱空間全路徑,如"Grandsoft.GEA"
Namespace.register?=?function(fullNS)
{
? //?將命名空間切成N部分,?比如Grandsoft、GEA等
?? var?nsArray?=?fullNS.split('.');
var?sEval?=?"";
?var?sNS?=?"";
?for?(var?i?=?0;?i?<?nsArray.length;?i++)
{
if?(i?!=?0)?sNS?+=?".";
sNS?+=?nsArray[i];
//?依次創(chuàng)建構造命名空間對象(假如不存在的話)的語句
?//?比如先創(chuàng)建Grandsoft,然后創(chuàng)建Grandsoft.GEA,依次下去
?sEval?+=?"if?(typeof("?+?sNS?+?")?==?'undefined')?"?+?sNS?+?"?=?new?Object();"
}
if?(sEval?!=?"")?eval(sEval);
}
//?注冊命名空間Grandsoft.GEA,?Grandsoft.GCM
Namespace.register("Grandsoft.GEA");
Namespace.register("Grandsoft.GCM");
//?在Grandsoft.GEA命名空間里面聲明類Person
Grandsoft.GEA.Person?=?function(name,?age)
{
? this.name?=?name;
?? this.age?=?age;
}
//?給類Person添加一個公共方法show()
Grandsoft.GEA.Person.prototype.show?=?function()
{
?? alert(this.name?+?"?is?"?+?this.age?+?"?years?old!");
}
//?演示如何使用類Person
var?p?=?new?Grandsoft.GEA.Person("yanglf",?25);
p.show();
第二種:
eye = {
??? namespace: function() {
??????? var a = arguments, o = null, i, j, d, rt;
??????? for (i = 0; i < a.length; ++i) {
??????????? d = a[i].split(".");
??????????? rt = d[0];
??????????? eval('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = ' + rt + ';');
??????????? for (j = 1; j < d.length; ++j) {
??????????????? o[d[j]] = o[d[j]] || {};
??????????????? o = o[d[j]];
??????????? }
??????? }
??? }
};
eye.namespace("eye", "eye.common", "eye.datePicker", "eye.selectCity", "eye.tab","eye.test");
eye.test={//測試命名空間
??? show: function() {
??????? return "aaa";
??? }
}
alert(eye.test.show());//命名空間
轉載于:https://www.cnblogs.com/marsleoguo/p/3449740.html
總結
以上是生活随笔為你收集整理的js高级编程中命名空间的两种用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenJudge计算概论-找和为K的两
- 下一篇: 关于arcgis发布wfs问题