Realmente no obtengo la función de ember.js 'reopenClass. Pensé que agregaba código adicional al prototipo del Objeto, por lo que todas las instancias de ese Objeto obtendrían la funcionalidad que se agregó de una manera no estática. No hace esto sin embargo. Parece que solo agrega código que se puede ejecutar estáticamente. Por ejemplo. Tengo este código:Ember.js ¿cómo funciona 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")
Genera esto:
1, yo wassup
2, yoghurt
3, yoghurt
4, yofresh
Lo que esperaba era esto:
1, yo wassup
2, yoghurt
3, yofresh
4, undefined (I think)
Así que mi pregunta es: ¿Qué reopenClass hacer y cuándo hacerlo lo uso ¿eso?
Ok, por lo Si obtengo esto r ight logger.reopen() solo agrega el código a la instancia del registrador, Logger.reopen() agrega código para cada instancia nueva que se creará (las instancias existentes no se modificarán) y Logger.reopenClass() agrega código que es estático para la clase Logger (no se puede invocar desde instancias, solo estáticamente). ¿Correcto? – koenpeters
Sí, eso es correcto. – pangratz
Ok. Gracias por arrojar luz. Me costó entender esto (como en: No lo obtuve) de la documentación en http://emberjs.com/documentation/. – koenpeters