命名空间namespace
1.对象字面量
var MYNAMESPACE = {
person: function(name) {
this.name = name;
this.getName = function() {
return this.name; }
}
};
使用:
var p = new MYNAMESPACE.person("asd");
p.getName(); // asd
嵌套命名空间:
var MYNAMESPACE = {
PEOPLE: {
person: function(name) {
this.name = name;
this.getName = function() {
return this.name;
}
}
},
PET: {
dog: function(petName) {
this.petName = petName;
this.getPetName = function() {
return this.petName;
}
}
}
};
嵌套的使用:
var p=new MYNAMESPACE.PEOPLE.person('asd');
console.log(p.getName()); // asd
2.构造函数
我们有可能覆盖全局空间中的同名对象。因此我们需要在声明命名空间前进行检查,保证全局空间的安全。若全局空间中已有同名对象,则不覆盖该对象;否则创建一个新的命名空间.
var MYNAMESPACE = MYNAMESPACE || {};
MYNAMESPACE.person = function(name) {
this.name = name;
};
MYNAMESPACE.person.prototype.getName = function() {
return this.name;
};
// 使用方法
var p = new MYNAMESPACE.person("asd");
p.getName(); // asd
**注意在定义命名空间构造函数方法时,需要将其定义在prototype上,否则新建的实例无法访问对象的方法。