javascript - 在 Javascript 中调用另一个函数中的函数
问题描述
我已经阅读了一些关于此的 SO 答案,但似乎没有任何用处。
我在 React-Redux-Google Maps 项目中有一个模块,它导出如下函数:
export default function(google, map, store) {
// Main module functionality
}
这个函数被导入到我的initMap
模块中,并用google
、map
和调用store
。因此,此功能能够与地图交互,例如创建谷歌地图标记、折线等。
在这个函数中,我创建了一个辅助函数来清除地图。我可以通过引用渲染对象并调用它们的方法来做到这一点.setMap(null)
(根据谷歌地图的 API 文档)。但是,我想导出这个辅助函数,以便可以将它导入我的 React 组件并将其绑定到onClick
处理程序。
我知道我无法从导出的函数中导出辅助函数。我也不能直接调用辅助函数。我也不能将辅助函数带到主函数之外(即它们在同一范围内),因为它会失去对google
、map
和store
变量的访问权限。
我认为可能的唯一解决方案是我重组主(默认导出)函数以返回一个对象:
{
main: main,
helper: helper
}
wheremain
和 helper 是子函数。这样,两个子函数都可以访问范围内的google
、map
和store
变量。
IE:
export default function(google, map, store) {
function main() {
// Main module functionality
}
function helper() {
// Helper module functionality
}
return {
main: main,
helper: helper
};
}
这是可行/不好的做法吗?
解决方案
如果这两个函数没有密切相关,将函数存储在不同的文件中并同时导入会更有意义。
如果它们更密切相关,这似乎是这里的情况,您可以将它们存储为类的静态方法,然后导出类。此选项有助于将您的相关函数组织到帮助器类的方法中,并且可以简单地完成工作。
export default class {
static main() {
// Main module functionality
}
static helper() {
// Helper module functionality
}
}
推荐阅读
- scala - Scala:如何正确解析 0~FFFF 范围内的十六进制值,确保我总是以 16 位结束,因为每个位都有自己的价值?
- mysql - 选择指定年份的结果
- azure-active-directory - Azure AD B2C 注册和登录是否可以重定向到自己的 URL,而不是 Microsoft 提供的 URL?
- node.js - 是否有某种与 Node.js 可以处理多少长轮询并发请求相关的 AWS 设置?
- haskell - Haskell 类型记录语法
- java - 如何为 XLSReader 配置 XML-config
- scala - 为什么伴生对象在编译时可以访问其伴生类中的私有 val,但在解释时不能这样做?
- r - 2 个条件的 top_n
- python - 将 2 列合并为 1 列
- python - Python - 没有taskkill / F无法终止控制台脚本