Я действительно не понимаю функцию reopenClass ember.js. Я думал, что это добавило дополнительный код к прототипу объекта, поэтому все экземпляры этого объекта получат функциональность, которая была добавлена нестатическим способом. Однако он этого не делает. Похоже, он добавляет только код, который может выполняться статически. Например. У меня есть этот код:
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")
Он выводит это:
1, yo wassup
2, yoghurt
3, yoghurt
4, yofresh
Я ожидал этого:
1, yo wassup
2, yoghurt
3, yofresh
4, undefined (I think)
Итак, мой вопрос: :Что делает reopenClass и когда я его использую?