javascript - 如何用函数包装 JS 库并将其放入命名空间?

标签 javascript oop namespaces global-variables encapsulation

我有一个使用 JavaScript 编写的支付网关 API 包装器

但是它的设计很糟糕。

它使用163个全局(窗口)对象

我想做的是

获取API包装器生成的所有全局对象

将它们全部放入一个名为“PG”的对象中。


所以我可以使用它的方法

PG.methodName()

并通过以下方式获取变量

PG.variableName


如何使用 JavaScript 实现此目的?

或者还有其他方法来加载带有命名空间的脚本吗?

<小时/>

这是有问题的 JS 库:See Gist

最佳答案

您可以创建一个虚拟 JavaScript 对象并向其添加函数和变量,如下所示:

var PG = PG || {};
PG.methodName = apiMethodName;
PG.variable = variableName;

此方法将在 PG 范围内创建其重复项,同时将原始函数保留在 window 范围内。为了将它们移出全局范围,您必须修改 api 脚本本身,这可能不是一个好主意。

关于javascript - 如何用函数包装 JS 库并将其放入命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546796/

相关文章:

c++ - 在 opencv c++ 中确定 StatModel 的类型

c# - 命名空间 'FriendlyUrls' 中不存在类型或命名空间名称 'Microsoft.AspNet'

iphone - iOS 版 Sudz-c 的问题,缺少命名空间

JavaScript REGEX - 任意顺序相同的数字 3 次

javascript - 如何使用 nodejs 管理完全独立的上下文?

javascript - 使用 JavaScript 突出显示和格式化代码片段

python - __init__() 应该调用父类的 __init__() 吗?

javascript - Promise.all 不等待新的 Promise 解决

Python:在多重继承中调用多个初始化

javascript - Vanilla JavaScript 中的事件处理程序命名空间