【发布时间】:2012-03-27 00:24:30
【问题描述】:
在工作中,我必须处理供应商希望我们放入网站的大量(有时很糟糕)JavaScript。其中一些将任意的、未命名空间的名称添加到全局范围。我一直在玩弄关于沙盒这些程序的不同想法,因此它们无法直接访问全局范围,但我一直无法想到任何可能真正起作用的东西。 (我想过评估获取的代码,但我确信这是个坏主意。)
有哪些解决方案可以在仍然使用任意 3rd 方 JavaScript 的同时保持全局范围的清洁?
编辑:@kirilloid 的评论告诉我,我还不清楚这段代码是如何交付的。我通常不会获得代码 来放入我们的网站。大多数时候,我只是得到一个 URL,并要求我创建一个指向它的 script 标记。
【问题讨论】:
-
将丢给您的代码插入函数调用并仅公开您需要的函数。 adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
-
@kirilloid 很抱歉造成混乱。如果我有使用模块模式的代码,我可以使用模块模式。我会用我上面的 eval 想法做到这一点,但大多数时候我只是得到一个指向托管在其他地方的第三方脚本的 URL。我已经更新了我的问题以反映这一点。
标签: javascript namespaces global-variables