Non ho davvero la funzione di reopenClass di ember.js. Ho pensato di aggiungere codice aggiuntivo al prototipo dell'oggetto, quindi tutte le istanze di quell'oggetto otterrebbero la funzionalità che è stata aggiunta in modo non statico. Non lo fa comunque. Sembra che aggiunga solo codice che può essere eseguito staticamente. Per esempio. Ho questo codice:Ember.js come funziona reopenClass?
Logger = Ember.Object.extend({
log: function(thing) {
console.log(thing + ' wassup');
}
});
var logger = Logger.create();
logger.log("1, yo")
logger.reopen({
log: function(name) {
console.log(name + 'ghurt')
}
});
logger.log("2, yo")
Logger.reopenClass({
log: function(name) {
console.log(name + 'fresh')
}
});
logger.log("3, yo")
Logger.log("4, yo")
Produce questo:
1, yo wassup
2, yoghurt
3, yoghurt
4, yofresh
Quello che mi aspettavo era questo:
1, yo wassup
2, yoghurt
3, yofresh
4, undefined (I think)
Quindi la mia domanda è: Cosa reopenClass fare e quando si usa vero?
Ok, Se ottengo questo r ight logger.reopen() aggiunge solo il codice all'istanza del logger, Logger.reopen() aggiunge il codice per ogni nuova istanza che verrà creata (le istanze esistenti non saranno modificate) e Logger.reopenClass() aggiunge il codice che è statico a la classe Logger (non può essere chiamata da istanze, solo staticamente). Corretta? – koenpeters
Sì, è corretto. – pangratz
Ok. Grazie per aver fatto luce. Ho avuto difficoltà a capire questo (come in: I did not get it) dalla documentazione su http://emberjs.com/documentation/. – koenpeters