在Javascript中调用另一个函数中的函数
我已经读了一些关于这个的答案,但似乎没有什么有用的 我在React Redux Google Maps项目中有一个模块,导出如下函数:在Javascript中调用另一个函数中的函数,javascript,function,module,scope,Javascript,Function,Module,Scope,我已经读了一些关于这个的答案,但似乎没有什么有用的 我在React Redux Google Maps项目中有一个模块,导出如下函数: export default function(google, map, store) { // Main module functionality } 此函数被导入myinitMap模块,并使用google、map和store调用。因此,此功能能够与地图交互,例如创建谷歌地图标记、多段线等 在这个函数中,我创建了一个helper函数来清除映射。我可以通过
export default function(google, map, store) {
// Main module functionality
}
此函数被导入myinitMap
模块,并使用google
、map
和store
调用。因此,此功能能够与地图交互,例如创建谷歌地图标记、多段线等
在这个函数中,我创建了一个helper函数来清除映射。我可以通过引用渲染对象并调用它们的方法.setMap(null)
(根据谷歌地图的API文档)来实现这一点。但是,我想导出这个helper函数,这样我就可以在React组件中导入它,并将其绑定到onClick
处理程序
我知道我不能从导出的函数中导出助手函数。我也不能直接调用helper函数。我也不能将helper函数带到主函数之外(即它们在同一范围内),因为这样它就无法访问google
、map
和store
变量
我认为唯一可行的解决方案是重新构造main(默认导出)函数以返回一个对象:
{
main: main,
helper: helper
}
其中,main
和helper是子函数。这样,两个子函数都可以访问google
、map
、和store
变量,这些变量将在范围内
即:
这是否可行/不好的做法?如果这两个函数不密切相关,那么将函数存储在不同的文件中并同时导入就更有意义了 如果它们之间的关系更密切(这里似乎是这样),则可以将它们作为类的静态方法存储在中,然后导出该类。此选项将有助于将相关函数组织到helper类的方法中,并且可以简单地完成工作
export default class {
static main() {
// Main module functionality
}
static helper() {
// Helper module functionality
}
}
只是澄清一下,类解决方案在概念上与对象解决方案非常相似,对吗?选择其中一个有什么好处/成本吗?例如,
.main()
vs.main()
。它们确实非常相似,但类的解决方案较短,并且更易于编写和读取,特别是当您将许多函数分组而不是仅将两个函数分组时。无论你选择哪一个都取决于你。我一直在试验你的建议(即类
实现),但面临一些问题。我无法从static main()
设置属性(无法分配给函数类的只读属性“”。但是,如果我使用new
关键字进行实例化,我将无法访问静态方法。问题是我需要在方法之间共享变量,这意味着我需要将它们设置为类属性。
export default class {
static main() {
// Main module functionality
}
static helper() {
// Helper module functionality
}
}