Sono nuovo a CoffeeScript (e piuttosto inesperto con JS troppo, così dispiace se questo è ingenuo) e stavo cercando di creare una classe, come di seguito:CoffeeScript Classe Membri
class Test
a: []
make: ->
@a.push ['A', 'B', 'C']
getdata: ->
output = ""
for i in @a
output += i
output
b = new Test
b.make()
alert(b.getdata())
c = new Test
c.make()
alert(c.getdata())
L'output che ottengo è: "A, B, C" "A, B, C, A, B, C"
Nonostante crei una nuova istanza di "Test"; la matrice viene aggiunta e non viene cancellata. Cosa sto facendo di sbagliato qui? Sto inizializzando la variabile membro errata?
Si dovrebbe guardare come funziona il prototipo e guardare il codice generato da javascript. Vedo un sacco di questo errore in coffeescript (anche in tutorial/libri di cucina). La regola che uso è definire solo le funzioni e le proprietà statiche nei membri della classe (definisco le proprietà dell'istanza nel costruttore con la sintassi @member). E sì, è un po 'di confusione dato l'uso del coffeescript della parola chiave class. – Guillaume86
nota a margine: 'getdata: -> @ a.join ('')' – tokland
Grazie a Guillaume86 e tokland. Ho imparato molto da questo. – Anoop