模仿jQuery等命名空间的JavaScript框架是否会进行命名空间冲突检测?如果不是我应该自己管理它?
如果是,是什么阻止了这种框架自己检测这种碰撞?
答案 0 :(得分:5)
JavaScript命名空间通常通过使用对象和闭包进行模仿,并且通常使用自调用函数进行初始化:
var myNamespace = (function () {
var _name = 'Bob';
return {
somePublicMethod: function () {
return 'Hello, ' + _name;
}
};
})();
alert(myNamespace.somePublicMethod());
不幸的是,如果重新定义命名空间变量,则没有任何警告。您真正要做的是检查是否已经定义了命名空间变量,如果是,则抛出异常或引发错误:
if (typeof myNamespace !== 'undefined') {
var myNamespace = (function () {
// ...
})();
}
else {
throw new Error("Whoops! myNamespace already exists.");
}
答案 1 :(得分:1)
考虑提出一个开发标准,整个团队同意如何调用命名空间。此外,我发现在实际实现数据结构或命名空间之前,检查数据结构或命名空间的任何更