我在JavaScript中有一个支付网关 API 包装器。
但它设计得很糟糕。
它使用163 个全局(窗口)对象。
我想做的是
获取 API 包装器生成的所有全局对象
并将它们全部放在一个名为“PG”的对象中。
所以我可以使用它的方法
PG.methodName()
并通过
PG.variableName
我怎样才能用 JavaScript 做到这一点?
还是有其他方法可以使用命名空间加载脚本?
这是有问题的 JS 库:请参阅 Gist
我在JavaScript中有一个支付网关 API 包装器。
但它设计得很糟糕。
它使用163 个全局(窗口)对象。
我想做的是
获取 API 包装器生成的所有全局对象
并将它们全部放在一个名为“PG”的对象中。
所以我可以使用它的方法
PG.methodName()
并通过
PG.variableName
这是有问题的 JS 库:请参阅 Gist
You can create a dummy javascript object and add functions and variables to it like this:
var PG = PG || {};
PG.methodName = apiMethodName;
PG.variable = variableName;
This approach will create their dublicates within PG
scope while leaving original functions in window
scope. In order to move them from global scope you will have to modify api scripts themselves, which may be not a good idea.
您正在寻找关闭。
使用“立即调用函数表达式”(也称为“自执行匿名函数”)来包装和执行您的代码;
(function( window, document, NS, undefined ){
NS.variableName = "string value";
NS.methodName = function() {};
function myFunction() { alert('within closure'); };
}( window, window.document, (window.NS = window.NS || {}) ));
然后,您可以NS
从闭包外部访问,但不能myFunction
访问仅限于闭包范围的函数。
是的,您可以重NS
命名PG
甚至PayGate
:)