我在 JavaScript 中有支付网关API包装。
但它的设计很糟糕。
它使用 163个全局(窗口)对象。
我想做的是
获取API包装器生成的所有全局对象
和将它们全部放在一个名为“PG”的对象中。
所以我可以通过
使用它的方法PG.methodName()
并通过
获取变量PG.variableName
这是有问题的JS库:See Gist
答案 0 :(得分:1)
您正在寻找closure。
使用“Immediately-Invoked Function Expression”(也称为“自执行匿名函数”)来包装和执行代码;
(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
:)
答案 1 :(得分:0)
您可以创建一个虚拟javascript对象,并向其添加函数和变量,如下所示:
var PG = PG || {};
PG.methodName = apiMethodName;
PG.variable = variableName;
此方法将在PG
范围内创建其共享内容,同时将原始函数保留在window
范围内。为了将它们从全局范围移开,您将不得不自己修改api脚本,这可能不是一个好主意。