【问题标题】:Dynamically add functions to a class definition将函数动态添加到类定义中
【发布时间】:2021-04-26 23:58:43
【问题描述】:

我有一个库,我正在转换为使用 ES2015 语法并作为 ES 模块分发。

它公开了一个类,其中许多成员是动态构造的。大大简化了,它的结构是这样的:

class Utils {
    // ...
}

extraFuncs.forEach(funcName => Utils.prototype[funcName] = makeFunc(funcName));
export default Utils;

(实际代码为here)。

有没有办法在不操纵原型的情况下实现这种方法的动态创建?

直接向类添加函数似乎没有任何作用。而且使用扩展运算符来合并对象似乎也不起作用。

(我在这里的一个动机是通过一个特定的 lint 规则来抱怨我在做什么。)

【问题讨论】:

  • 是哪条 lint 规则?
  • 我认为是公司内部的自定义。

标签: javascript class ecmascript-6 prototype


【解决方案1】:

有没有办法在不操纵原型的情况下实现这种方法的动态创建?

没有。根据定义动态创建方法意味着扩展原型(evil 方法除外)。

禁用该 linter 规则。

【讨论】:

  • 邪恶的意思,eval? :)
猜你喜欢
  • 2023-03-05
  • 2021-12-07
  • 1970-01-01
  • 2019-09-05
  • 2021-10-28
  • 1970-01-01
  • 2010-10-31
  • 2021-07-23
  • 1970-01-01
相关资源
最近更新 更多