From b2bcb002bd880d6cea078c693cd9f59cdad2fb2c Mon Sep 17 00:00:00 2001 From: Scott Carleton Date: Thu, 13 Sep 2012 19:29:49 -0400 Subject: [PATCH] instance method example for clarification --- .../class-methods-and-instance-methods.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/chapters/classes_and_objects/class-methods-and-instance-methods.md b/chapters/classes_and_objects/class-methods-and-instance-methods.md index 53977a6..492f0b9 100644 --- a/chapters/classes_and_objects/class-methods-and-instance-methods.md +++ b/chapters/classes_and_objects/class-methods-and-instance-methods.md @@ -9,6 +9,7 @@ You want to create a class methods and instance methods. ## Solution +### Class Method {% highlight coffeescript %} class Songs @_titles: 0 # Although it's directly accessible, the leading _ defines it by convention as private property. @@ -30,6 +31,25 @@ song.get_count() # => TypeError: Object # has no method 'get_count' {% endhighlight %} +### Instance Method +class Songs + _titles: 0 # Although it's directly accessible, the leading _ defines it by convention as private property. + + get_count: -> + @_titles + + constructor: (@artist, @title) -> + @_titles++ + +song = new Songs("Rick Astley", "Never Gonna Give You Up") +song.get_count() +# => 1 + +Songs.get_count() +# => TypeError: Object function Songs(artist, title) ... has no method 'get_count' +{% endhighlight %} + + ## Discussion Coffeescript will store class methods (also called static methods) on the object itself rather than on the object prototype (and thus on individual object instances), which conserves memory and gives a central location to store class-level values.