gpt4 book ai didi

javascript - JS/TS : How can I turn a factory function into a more functional pattern?

转载 作者:行者123 更新时间:2023-12-01 00:21:47 24 4
gpt4 key购买 nike

我将一个类重构为一个模块,其中每个函数都需要一个辅助函数才能工作。

面向对象类

class Foo {
constructor(config) {
this.helper = new Helper(config);
}

fooMethod (arg) {
return this.helper(arg);
}
}

工厂方法

const fooFN = (helper) => (arg) => helper(arg);

export default Foo (config) => {
const helper = new Helper(config);

return {
fooMethod: fooFN(helper)
}
}

此辅助函数在工厂函数中初始化,该函数返回需要辅助方法的所有函数的部分内容。

在我看来,这并不是路的尽头。与类的差异很小,可能有另一种更实用的方式来编写它,但我无法理解它。

如何将辅助函数传递给模块的每个导出成员,而无需每次调用​​该成员时都初始化该辅助函数?

最佳答案

我认为没有理由从您的对象中删除 .helper 属性。你可以直接写

function fooMethod(arg) {
return this.helper(arg);
}

export default function(config) {
return {
helper: Helper(config),
fooMethod,
}
}

这样 fooMethod 就可以被重用,就像 class 语法一样。

关于javascript - JS/TS : How can I turn a factory function into a more functional pattern?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59352592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com