【问题标题】:Redundant code for objects name-values in JavaScriptJavaScript 中对象名称-值的冗余代码
【发布时间】:2021-01-13 15:37:28
【问题描述】:

我定义了一个 js 对象,它的名称-值对是函数表达式,具有或多或少相同的函数定义。对象的键名与从外部导入的模块的功能相匹配。

const myModule = require('some_module');    //some module imported from outside

const myObj = {};

myObj.abc = (param1, param2, param3) => {
  myModule.abc(param1, param2, param3);
  // some algorithm (say algo)
}

myObj.xyz= (param1, param2, param3) => {
  myModule.xyz(param1, param2, param3);
  // same algorithm (algo)
}

myObj.pqr= (param1, param2, param3) => {
  myModule.pqr(param1, param2, param3);
  // same algorithm (algo)
}

//All the three names (abc, xyz, pqr) have nearly same function definitions.

我的问题是;有没有更好的方法来减少代码行,因为代码看起来是多余的?

【问题讨论】:

  • 你能分享一下你是怎么称呼他们的吗?
  • 请注意不要因为几行代码而牺牲可读性。

标签: javascript object javascript-objects jsobject


【解决方案1】:

我会遍历一组方法名称来定义函数:

const methods = ['abc', 'xyz', 'pqr'];
for (const key of methods) {
  myObj[key] = (param1, param2, param3) => {
    myModule[key](param1, param2, param3);
    // some algorithm (say algo)
  };
}

【讨论】:

  • 其实这些函数名(func1, func2, func3)在现实中是通用的,这里我只是为了演示使用这些名称。例如 func1 是 abc,func2 是 xyz,func3 是 pqr。
  • 一如既往,请在您的问题中包含实际代码以获得有用的答案
  • 好的,我进行了编辑。感谢您指出。
  • 简单的调整,只需创建一个方法名数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多