Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling a method from the constructor in Coffeescript

Tags:

coffeescript

Is it possible to call a method from the constructor in Coffeescript?
e.g.

class Animal
  constructor: (@name) ->
    move()

  move: (meters) ->
    alert @name + " moved #{meters}m."

class Snake extends Animal
  move: ->
    alert "Slithering..."
    super 5

sam = new Snake "Sammy the Python"

This is generating the following error message "ReferenceError: move is not defined"

like image 811
Sam Avatar asked Aug 08 '11 10:08

Sam


2 Answers

It is possible. However, to refer to the method you must use @move() or this.move(), the name move() itself is not enough.

like image 164
Jeremy Avatar answered Oct 14 '22 10:10

Jeremy


Gotcha Alert: if you find that @ or this does NOT refer to the new instance in a constructor, check you remembered to use the NEW keyword:

instance = new Class()

NOT:

instance = Class()

This caught me out and was really frustrating. Hope this helps someone else!

like image 24
Lucidity Avatar answered Oct 14 '22 10:10

Lucidity