基本包含
* 命名空间
* 即时函数
* 私有和特权成员
* 声明依赖
(1)、建立一个命名空间,并且启动可以提供有用数组方法的工具模块。
MYAPP.namespace('MYAPP.utiltities.array');
(2)、下一步是定义该模块。对于需要保持私有性的情况,本模式则使用了一个可以提供私有作用域的即时函数。该即时函数返回了一个对象,即具有公共接口的实际模块。
MYAPP.utilities.array = (function(){
return {
//todo...
};
})())
(3)、添加私有和特权方法
MYAPP.utilities.array = (function(){
//依赖
var uobj = MYAPP.utilities.object,
ulang = MYAPP.utilities.lang,
//私有属性
array_string = "[object Array]",
ops = Object.prototype.toString;
//私有方法
//...
//公有API
return {
inArray: function(needle,haystack){
for(var i = 0,max = haystack.length;i < max;i++){
if(haystack[i] === needle){
return true;
}
}
},
isArray:function(a){
return ops.call(a) === arrya_string;
}
};
}());
附: namespace()函数
var MYAPP = MYAPP || {};
MYAPP.namespace = function(ns_string){
var parts = ns_string.split(‘.’),
parent = MYAPP,
i;
if(parts[0] === “MYAPP”){
parts = parts.slice(1);
}
for(i = 0; i < parts.length; i++){
if(typeof parent[parts[i]] === “undefined”){
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
};