gpt4 book ai didi

javascript - 如何组合匿名函数?

转载 作者:行者123 更新时间:2023-11-28 20:13:53 25 4
gpt4 key购买 nike

从 SO 和其他地方来看,似乎没有办法扩展匿名函数。...但是,看到我谷歌在他们的谷歌分析(analytics.js)跟踪脚本中做了类似的事情,我不知道如何复制相同的内容。

基本上,我有一堆封装在匿名函数中的方法。我不希望它们泄漏到全局 namespace 中。

但是...我需要能够让用户有选择地加载“扩展”原始脚本的插件(位于单独的 javascript 文件中)。我这样做是为了使原始脚本尽可能小。我看不到一种方法可以将我的脚本分解为多个文件,然后根据用户指定的选项动态地将它们连接在一起,而无需公开所有方法以便它们可以进行通信。然而,这也将使它们可供其他人使用,因此他们可能没有按预期使用脚本。

总而言之,我想要:

(function() {
// Main.js
....
Based on user input combine with plugin1.js so i can call his methods and he can call mine
})();

(function() {
// Plugin1.js
// More methods
})();

是否有任何方法或解决方法可以在不暴露我所有方法的情况下完成此任务?

最佳答案

使用 revealing module pattern 的组合和一个全局命名空间对象。像这样:

//main.js
if (window.MY_APP === undefined) {
window.MY_APP = {};
}

window.MY_APP.main = (function () {
//Your code
var registerPlugin = function() { ... },
unregisterPlugin = function () { ... };


return { //Here you expose the functions you want to be public
registerPlugin: registerPlugin,
unregisterPlug: unregisterPlugin
};
}());

//Plugin.js
if (window.MY_APP === undefined) {
window.MY_APP = {};
}

window.MY_APP.myPlugin = (function() {
//Plugin code


return {
//public methods of plugin
};
}());

关于javascript - 如何组合匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19482574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com