一直对命名空间不懂;今天才知道;才发现自己很菜!今天总结下自己所学的东西吧
1.个人感觉命名空间就是为了解决函数的重复;或者说是函数覆盖;或冲突;
//
声明一个全局对象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.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();