che sto leggendo le informazioni sulla classe ES6 su Babel.js's documentation e ho notato che si dice che gli oggetti possono ora avere i nomi delle proprietà dinamiche:È possibile avere più nomi di metodi dinamici in una classe?
var obj = {
...
// Computed (dynamic) property names
[ "prop_" + (() => 42)() ]: 42
};
Questo sembra che sarebbe utile nelle classi pure. E 'possibile fare qualcosa di simile a una classe ES6 senza farlo in un costruttore, vale a dire:
class Foo {
[ "read" + (...)(['format1', 'format2']) ] {
// my format reading function
}
}
piuttosto che fare qualcosa di simile nel costruttore:
class Foo {
constructor(opts) {
let formats = ['format1', 'format2'];
let self = this;
formats.forEach(function(format) {
self["read" + format] = function() {
// my format reading function
}
})
}
}
In altre parole, voglio essere in grado di prendere alcuni array, come ['format1', 'format2']
e creare due metodi, readformat1
e readformat2
, nella classe in modo dinamico, senza utilizzare il costruttore. È possibile?
"ma si spera che sia comprensibile" --- non lo è: -S – zerkms
ahh l'ho modificato per usare la sintassi 'function' piuttosto che la sintassi' => ', quindi dovrebbe avere più senso ora. – josh
Basta aggiungerli dinamicamente al prototipo come sempre. – Bergi