javascript 全局命名空间是否在每次完整回发时被清除
Does the javascript global namespace get cleared with each full postback?
我一直在阅读有关用全局变量和函数弄乱全局命名空间的危险。
我刚刚读到定义全局函数的"旧"方法是有问题的,尤其是在您有多个开发人员处理同一项目的情况下。
我理解并希望编写最好的代码,但上述陈述让我感到困惑。
开发人员很少在项目的同一页面上工作,我认为当用户更改项目中的页面时,全局命名空间会清除。
难道不是这样吗?
开发人员很少在项目的同一页面上工作,我认为当用户更改项目中的页面时,全局命名空间会清除。
是的,全局命名空间在每个请求中都会被清除,但这不是污染全局命名空间的理由。你似乎在考虑一个在同一个房间里工作的小型开发人员团队。但是,即便如此,如果一个开发人员决定使用某些第三方库或小部件怎么办?如果该小组件修改了全局命名空间,则可能会干扰当前代码。这就是为什么最佳做法是避免在全局命名空间上创建变量/函数。
"开发人员很少在项目的同一页面上工作"
根据我的经验,这种假设是错误的。特别是,将库用于常用功能是一种很好的做法。库的关键点是它是可重用的。因此,根据定义,库作者正在"处理您的"页面。
开发人员很少在项目的同一页面上工作
这是非常不真实的。在维护公司网站的过程中,可以轻松雇用和解雇多个开发人员,他们可能都必须在您创建的同一页面上工作。
首先 - 是的,当页面重新加载时,所有javascript都会重新初始化。 因此,如果您有以下window.foo
则每次加载页面时始终是一个:
window.foo = 1;
alert(foo);
window.foo++;
其次 - 在团队(或您的项目中)中,命名空间的一种方式是这样的:
var myCompany = {};
myCompany.Utils = {};
myCompany.Utils.doSomething = function() {
alert("doSomething");
};
myCompany.Utils.doSomethingElse = function() {
alert("doSomethingElse");
};
myCompany.Utils.doSomethingElse();
这不仅可以防止开发团队内部的"冲突"。 它还将您的代码与页面上引用的另一个第三方 JavaScript 意外"冲突"隔离开来。
- 在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文件中的脚本标记调用非全局命名空间函数
- 正在测量全局命名空间的污染
- 谷歌闭包命名空间冲突
- socket.io:断开连接事件 - “传输关闭”、“客户端命名空间断开连接”、“传输错误”和“强制关闭”
- javascript 全局命名空间是否在每次完整回发时被清除