我有一个巨大的项目,大约有 4000 行 JavaScript。 该项目从未打算在另一个项目站点中使用,它始终被规划为单端应用程序。 遗憾的是,客户改变了他的意见,现在它应该与同一个单一站点应用程序中包含的其他 3 个项目一起运行。
现在我必须确保没有一个变量或方法可以从另一个加载的 js 代码中“意外”删除或触及,例如如果下一个项目像“var mPath =/NowNewPath/”一样加载,“var mPath =/MyPath”当然可以被覆盖。
如何添加以确保不会发生这种情况? 添加命名空间对吗? 有什么想法可以解决所有 4000 行代码的问题吗?
最佳答案
首先,将所有内容包装在 Immediately-Invoked-Function-Expression 中将所有变量包含在一个隔离的范围内。
(function() {
/* all 4000 lines of code */
})();
其次,确保没有意外的全局变量 - 使用 var
关键字声明局部变量。
(function() {
/* if you see this within the 4000 lines of code */
somePath = "abc";
/* change to this */
var somePath = "abc";
})();
最后,仅公开一个(或尽可能少的)全局变量作为库的入口点。
/* "myLib" should be your globally-unique namespace */
myLib = (function() {
/* the 4000 lines of code */
return {
/* attach functions and variables */
somePath: somePath;
};
})();
alert(somePath); // undefined
alert(myLib.somePath); // "abc"
关于javascript - 向大型项目添加 javascript 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25739601/