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