Comparing `reopenClass` with `create`

A simple test to compare adding methods and properties to ember class and their instances using `reopenClass` or `create` method.

by Aras Balali Moghaddam

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0.beta6/handlebars.min.js"></script>
<script src="http://cloud.github.com/downloads/emberjs/ember.js/ember-latest.js"></script>
<script type="text/x-handlebars" >
</script>

CoffeeScript

#this was a good source to understand differences between Class.reopenClass, Class.reopen, and instance.reopen
#http://stackoverflow.com/questions/10269372/ember-js-how-does-reopenclass-work

window.App = Ember.Application.create()

App.Pet = Ember.Object.extend(
  whoAmI: () ->
    return "My name is #{this.get('name')} and I am a #{this.get('color')} #{this.get('type')}."
)

App.PetsController = Ember.ArrayController.extend()

App.PetsController.reopen(
  reopenClassFind: (name) ->
    @findProperty("name", name)
)

App.petsController = App.PetsController.create(
  content: [
    App.Pet.create(
      id: 1
      type: "cat"
      color: "white"
      name: "Zooby"
    ),
    App.Pet.create(
      id: 2
      type: "cat"
      name: "Shasta"
      color: "orange"
    ),
    App.Pet.create(
      id: 3
      name: "Larry"
      type: "loach"
      color: "brown"
    )
  ]
  createFind: (name) ->
    @findProperty("name", name)
)

petOne = App.petsController.createFind "Larry"
console.log "who are you?", petOne.whoAmI()
    
petTwo = App.petsController.reopenClassFind "Shasta"
console.log "who are you?", petTwo.whoAmI()