将 JavaScript 封装在命名空间中
encapsulating javascript inside a namespace
我希望将我的javascript封装在这样的命名空间中:
MySpace = {
SomeGlobal : 1,
A: function () { ... },
B: function () { ....; MySpace.A(); .... },
C: function () { MySpace.SomeGlobal = 2;.... }
}
现在想象一下,我有大约 12K 行 JavaScript,而不是几行代码,其中包含数百个函数和大约 60 个全局变量。我已经知道如何将我的代码转换为命名空间,但我想知道是否有比沿着 12K 行代码到处添加MySpace.
更快的方法。
请让我知道是否有更快的方法可以做到这一点。感谢您的建议。
我喜欢这样包装命名空间。灵活性是巨大的,如果我们愿意,我们甚至可以在单独的包装器中分离MySpace命名空间的不同模块。您仍然必须在所有内容前面添加某种_self.
引用,但至少通过这种方式,如果需要,您可以非常快速地更改命名空间的整个名称。
可以看到如何使用这个方法,你甚至可以从第一个模块调用_self.anotherFunc(),你将得到第二个模块。
(function (MySpace, $, undefined) {
var _self = MySpace; // create a self-reference
_self.test = function () {
alert('we got here!');
_self.anotherFunc(); // testing to see if we can get the 2nd module
};
_self = MySpace; // reassign everything just incase
}(window.MySpace = window.MySpace || {}, jQuery));
$(function () {
MySpace.test(); // call module 1
MySpace.callOtherModule(); // call module 2
});
// Here we will create a seperate Module to the MySpace namespace
(function (MySpace, $, undefined) {
var _self = MySpace; // create a self-reference
_self.callOtherModule = function () {
alert('we called the 2nd module!');
};
_self.anotherFunc = function () {
alert('We got to anotherFunc from the first module, even by using _self.anotherFunc()!');
};
_self = MySpace; // reassign everything just incase
}(window.MySpace = window.MySpace || {}, jQuery));
js小提琴演示
将
function
体包装在现有代码周围以用作范围,隐藏全局中的所有内容 - 这将允许您执行内部调用而无需在任何地方粘贴Namespace.
前缀,整齐地隐藏您不希望其他人看到的内容,并且还需要最少的更改。
之后,确定要为每个人"导出"哪些函数,并将它们分配给要用作"命名空间"的对象的属性。
相关文章:
- 在javascript中使用命名空间
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- 如何使用javascript命名空间
- js命名空间和变量范围
- html,js-如何限制元素"范围“-命名空间
- 转换自的JavaScript命名空间
- 命名空间与自调用函数
- 什么's当前命名空间/类中JavaScript子命名空间/类的语法
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- jQuery命名空间和使用“;这个“;
- 在Firebug控制台中监视javascript命名空间变量
- jQuery事件命名空间是否可以包含破折号
- 用自定义javascript全局命名空间替换窗口
- 如何在Typescript中导出具有其他名称的命名空间
- 从html文件中的脚本标记调用非全局命名空间函数
- 正在测量全局命名空间的污染
- 将 JavaScript 封装在命名空间中
- Javascript:正常函数的命名空间封装
- 在JavaScript中封装Cleaner命名空间的类定义