Javascript本机不支持名称空间,需要实现。

在创建Javascript库时,名称空间非常重要。我们可以封装在名称空间中构成Javascript库的离散Javascript文件(* js),而不需要定义全局函数或类:

代码5-13:
复制代码代码如下所示:
var;
com.anyjava = { };
com.anyjava.person =函数(名){
/私有成员
无功_name =名称;

访问。
this.getname =函数(){
返回_name;
};
this.setname =函数(名){
_name =名称;
};
};
原型
com.anyjava.person.prototype = { {
函数(){
警报(this.getname()+吃东西。);
},
睡眠:函数(){
警报(this.getname()+睡觉。);
},
函数(){
警报(this.getname()+走。);
}
};
Var Dirk =新com.anyjava.person(短剑);
Dirk.eat();

从代码5-13,我们得到一个命名空间,这是更适合java开发者,我们还需要指定命令空间路径时实例化Person对象。

这里有一个小把戏。如果您使用的是一个开发得相对完整的命名空间计划的Javascript库,那么您可能厌倦了每次编写冗长的名称空间。的com.anyjava.control.ui命名空间下,有许多扩展的UI控件,要使用。我猜你不想写var xxx =新com.anyjava.control.ui.xxx多次。通过指定命名空间的别名,我们可以写更少的代码重复,如另一种方式来实例化代码5-13人,为5-14显示代码。

代码5-14:
复制代码代码如下所示:
var ns = com.anyjava;
Var Dirk =新的人( );
Dirk.eat();

最后,我要说明一个问题,你需要注意当使用命名空间。写的Javascript库,在大多数情况下,命名空间声明语句也可能出现在一个Javascript文件的多个位置,或有多个Javascript文件,但Javascript语言的特点是最后声明变量会覆盖同一名称的前面声明的变量,这就需要我们注意重复问题的声明,声明说,每一个命名空间对象,首先确定推荐的命名空间中的对象已经存在,如5-15显示代码:

代码5-15:
复制代码代码如下所示:
如果(typeof com.anyjava = =未定义)无功com.anyjava = { };

这样,我们可以确保com.anyjava对象声明只有一次。