代码描述:javascript命名空间。javascript命名空间简单介绍下载
namespace命名空间是一种代码组织结构,通过名称空间来区分类。 在当前ES标准中,并没有命名空间这个概念,但是在编写大型项目或者多个js库同时使用或者多人共同完成项目的时候,很难保证变量名不会出现重复的现象,所以模拟实现命名空间就是非常有必要的。 一.实现原理: 原理很简单,就是将js中的类(ES中并没有类这个概念,构造函数其实就是承担类的角色),作为另外一个对象的属性使用,也就是实现了命名空间的功效,先看一段简单的代码实例:
<script> var nsA=new Object(); var nsB=new Object(); nsA.obj=new Object(); nsB.obj=new Object(); </script>
在以上代码中,nsA和nsB就可以看做简单的命名空间,在各自的命名空间下,使用具有相同名称的类也是不冲突的,当然这里是模拟实现的,再来看一段比较好的实现划分命名空间的代码实例:
<script> Namespace = new Object(); 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]; sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();" } if (sEval != "") eval(sEval); } Namespace.register("Grandsoft.GEA"); </script>
以上代码看上去稍稍复杂一些,其实原理是一样的,使用示例:
<script> // 注册命名空间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(){ console.log(this.name + " is " + this.age + " years old!"); } // 演示如何使用类Person var p = new Grandsoft.GEA.Person("yanglf", 25); p.show(); </script>
请绑定手机号,在继续操作
注意:只有绑定手机以后,才可使用网站全部功能