【问题标题】:Define multiple functions at once一次定义多个函数
【发布时间】:2021-06-04 04:08:19
【问题描述】:

我需要为字母 a 到 z 声明 26 个函数,如下所示:

foo.a = function() {
 // code
}

foo.b = function() {
 // code
}

foo.c = function() {
 // code
}

等等。但这很多余,也很烦人,所以我想知道是否有更简单的方法。

【问题讨论】:

  • 了解每个功能将做什么以最有效地帮助您会很有帮助。请告诉我们您的意图是什么?
  • 将相同的功能代码分配给同一对象上的 26 个不同属性有什么意义?这根本没有意义。我 100% 确定有更好的方法来解决您实际尝试解决的任何问题。将来,请告诉我们真正的问题是什么,我们有机会为您提供比您目前所想的更好的解决方法。

标签: javascript node.js


【解决方案1】:

当然,你可以循环执行:

const foo = {}
'abcdefghijklmnopqrstuvwxyz'.split('').forEach((letter) => {
  foo[letter] = function () { /* code */ }
})

为了清楚起见,我写出了字符串中的字母,但还有其他方法可以生成连续字符的字符串,例如使用数组和 String.fromCharCode。

如果每个函数中的代码都需要是唯一的,这对您根本没有帮助,因为您所要做的就是您可用的代码,但是如果您希望,例如,让每个函数返回它自己的信,那会起作用的。

'abcdefghijklmnopqrstuvwxyz'.split('').forEach((letter) => {
  foo[letter] = () => letter
})

【讨论】:

  • 谢谢!这适用于类中的非静态方法吗?
  • 会的。您可以在类中执行此操作,例如使用this[letter] = ... 在构造函数中执行此操作,也可以在类外部使用SomeClass.prototype[letter] = ... 执行此操作,因为类至少部分只是原型的语法糖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多