use*_*291 1 javascript frameworks
模仿jQuery等命名空间的JavaScript框架是否会进行命名空间冲突检测?如果不是我应该自己管理它?
如果是,是什么阻止这样的框架自己检测这种碰撞?
JavaScript命名空间通常通过使用对象和闭包进行模仿,并且通常使用自调用函数进行初始化:
var myNamespace = (function () {
var _name = 'Bob';
return {
somePublicMethod: function () {
return 'Hello, ' + _name;
}
};
})();
alert(myNamespace.somePublicMethod());
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果重新定义命名空间变量,则没有任何警告.您真正要做的是检查是否已经定义了命名空间变量,如果是,则抛出异常或引发错误:
if (typeof myNamespace !== 'undefined') {
var myNamespace = (function () {
// ...
})();
}
else {
throw new Error("Whoops! myNamespace already exists.");
}
Run Code Online (Sandbox Code Playgroud)