gpt4 book ai didi

javascript - 如何创建工厂函数而不是使用类

转载 作者:行者123 更新时间:2023-12-01 03:51:08 26 4
gpt4 key购买 nike

我正在使用一个在其模块中实现 ES6 类的 javascript 库。我没有在 javascript 中使用经典继承,并且想从本质上“撤消”它们的类实现。有没有一种方法可以让我学习这些类并仍然在工厂/组合方法中使用它们。我想利用 JS 原型(prototype)继承和对象的简单可组合性。以下是我迄今为止所拥有的示例。最终我试图避免使用 class 和 new,因为我不习惯在 JavaScript 中使用它们。谁能告诉我我是否以正确的方式处理这个问题,或者我是否只是在浪费时间,谢谢。

class Example {

constructor(id) {
this.id = id;
}

getID() {
console.log(this.id);
}
}


function convertClassToObject(theClass) {
var x = new theClass();
var newX = Object.create(x);
return newX;
}

var NewPrototype = convertClassToObject(Example);

function NewFactory(options) {
var x = Object.assign(Object.create(NewPrototype), options);
return x;
}

var NewInstance = NewFactory({id: 123456789});

最佳答案

您应该习惯于 new,它比在工厂中进行原型(prototype)继承要简单得多。

当然,将构造函数转换为工厂函数很简单:

function classToFactory(constr) {
return (...args) => new constr(...args);
}

const makeExample = classToFactory(Example);
const newInstance = makeExample(123456789); // no `new` any more

关于javascript - 如何创建工厂函数而不是使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43192021/

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