2011-08-08 25 views
24

Czy można wywołać metodę z konstruktora w Coffeescript?
np.Wywołanie metody z konstruktora w Coffeescript

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" 

To generuje następujący komunikat o błędzie „ReferenceError: ruch nie jest zdefiniowana”

Odpowiedz

35

To jest możliwe. Jednak aby odnieść się do metody, musisz użyć @move() lub this.move(), sama nazwa move() nie wystarczy.

3

Gotcha Alert: jeśli okaże się, że @ czy to nie odnosi się do nowej instancji w konstruktorze, sprawdź pamiętałeś do korzystania z nowego słowa kluczowego:

instance = new Class() 
NIE

:

instance = Class() 

To mnie zaskoczyło i było naprawdę frustrujące. Mam nadzieję, że to pomoże komuś innemu!

Powiązane problemy