js模拟实现命名空间功能代码实例

快乐打工仔 分类:实例代码

使用命名空间可以有效的防止命名冲突,比如c#。

是一种非常实用的功能,但是javascript自身并没有定义这样的功能。

不过我们可以模拟实现,下面就通过代码实例做一下简单介绍。

首先看一下个简单代码实例:

var MSDNMagNS = {};
MSDNMagNS.Pet = function(name) { 
  // code  
};
MSDNMagNS.Pet.prototype.toString = function() { 
  // code 
};
var pet = new MSDNMagNS.Pet("pipipi.net");

上面的代码实现了简单的命名空间功能,原理其实非常的简单,就是创建一个对象,然后将各种方法或者属性作为此对象的属性。

命名空间也可以实现嵌套,代码如下:

var MSDNMagNS = {};
// nested namespace “Examples”
MSDNMagNS.Examples = {};
MSDNMagNS.Examples.Pet = function(name) { 
  // code 
};
MSDNMagNS.Examples.Pet.prototype.toString = function() { 
  // code 
};
var pet = new MSDNMagNS.Examples.Pet("pipipi.net");

上面的代码实现了命名空间的功能,不过还不够完美,名字太繁琐了,键入不够方便。

不过我们可以给它取一个别名,代码如下:

// MSDNMagNS.Examples and Pet definition...
// think “using Eg = MSDNMagNS.Examples;”
var Eg = MSDNMagNS.Examples;
var pet = new Eg.Pet("pipipi.net");
console.log(pet);

回复

我来回复
  • 暂无回复内容