Calling a method from the constructor in Coffeescript

10,457

Solution 1

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

Solution 2

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!

Share:
10,457

Related videos on Youtube

ThatHybrid
Author by

ThatHybrid

Java, Ruby & Javascript with a little bit of Python.

Updated on June 04, 2022

Comments

  • ThatHybrid
    ThatHybrid almost 2 years

    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"