Ember.js как работает reopenClass?

Я действительно не понимаю функцию 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 и когда я его использую?

24
задан Koen Peters 9 May 2013 в 23:55
поделиться