Sam
Sam

Reputation: 6250

Calling a method from the constructor in 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"

Upvotes: 25

Views: 10489

Answers (2)

Lucidity
Lucidity

Reputation: 1369

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!

Upvotes: 4

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

Upvotes: 36

Related Questions