首页 > 代码库 > javascript 命名空间,学习

javascript 命名空间,学习

一、

(function(){                var _NS=function(){                                }                _NS.prototype.alert=function(){                    console.log(‘test‘);                }                window.NS=new _NS();            })();

二、

// 声明一个全局对象Namespace,用来注册命名空间Namespace = new Object();// 全局对象仅仅存在register函数,参数为名称空间全路径,如"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];        // 依次创建构造命名空间对象(假如不存在的话)的语句        // 比如先创建Grandsoft,然后创建Grandsoft.GEA,依次下去         sEval += "if (typeof(" + sNS + ") == ‘undefined‘) " + sNS + " = new Object();"     }    if (sEval != "") eval(sEval);}
// 注册命名空间Grandsoft.GEA, Grandsoft.GCMNamespace.register("Grandsoft.GEA");Namespace.register("Grandsoft.GCM");// 在Grandsoft.GEA命名空间里面声明类PersonGrandsoft.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!");}// 演示如何使用类Personvar p = new Grandsoft.GEA.Person("yanglf", 25);p.show();

三、

var YAHOO = window.YAHOO || {};YAHOO.namespace = function(ns) {    if (!ns || !ns.length) {        return null;     }    var levels = ns.split(".");    var nsobj = YAHOO;    // YAHOO is implied, so it is ignored if it is included    for (var i=(levels[0] == "YAHOO") ? 1 : 0; i<levels.length; ++i) {         nsobj[levels[i]] = nsobj[levels[i]] || {};         nsobj = nsobj[levels[i]];     }    return nsobj;};YAHOO.extend = function(subclass, superclass) {    var f = function() {};     f.prototype = superclass.prototype;     subclass.prototype = new f();     subclass.prototype.constructor = subclass;     subclass.superclass = superclass.prototype;    if (superclass.prototype.constructor == Object.prototype.constructor) {         superclass.prototype.constructor = superclass;     }};YAHOO.namespace("util");YAHOO.namespace("widget");YAHOO.namespace("example");

四、

function namespace(ns){          if(typeof(ns)!="string")return;          ns=ns.split(".");          var o,ni;          for(var i=0,len=ns.length;i<len,ni=ns[i];i++){              try{o=(o?(o[ni]=o[ni]||{}):(eval(ni+"="+ni+"||{}")))}catch(e){o=eval(ni+"={}")}          }      }  /*    function a(){return 5}      namespace("a.b");      alert(a);      alert(a.b)      namespace("test.test.abc")      test.test.abc.func1=function(){          alert(‘func1 run‘)      }      alert(test.test)      test.test.abc.func1();  */

javascript 命名空间,学习