0
我正在使用在其模块中实现ES6类的JavaScript库。我没有在JavaScript中使用经典继承,并希望实质上“撤消”他们的类实现。有没有办法让我能够接受这些课程,并仍然以工厂/作曲的方式使用它们。我想利用JS原型继承和对象的易堆积性。以下是我迄今为止的一个例子。最终,我试图避免使用类和新的,因为我不习惯在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});
'class'是围绕构造函数和原型构建只是语法糖。所有内容仍然以原型为基础。 '新的例子(id)'相当于'var obj = Object.create(Example.prototype); obj.constructor(ID)'。 –
哦,完美的,我可以将原型与Object.create连接起来,并将该实例用于工厂。 – jhamPac
@MikeC除了在ES6中,其中构造函数*必须用'new'(或'super()'或'Reflect.construct')调用) – Bergi