Когда вы определяете a: []
, вы создаете один объект массива в прототипе класса. Каждый экземпляр создаваемого вами класса будет иметь один и тот же объект массива. Всякий раз, когда один экземпляр изменяет значение, изменение видимо всем остальным.
Обратите внимание, что это только в том случае, если вы измените значение, например, добавив элементы в массив. Если вы замените значение, например, назначив новый массив, это повлияет только на текущий экземпляр.
Если вы хотите, чтобы свойство было инициализировано для каждого экземпляра, вы должны определить его в constructor
, когда экземпляр фактически создается:
class Test
constructor: ->
@a = []
@a.push ['A', 'B', 'C']
getdata: ->
output = ""
for i in @a
output += i
output
b = new Test
alert(b.getdata())
c = new Test
alert(c.getdata())
Попробуйте это , и вы обнаружите, что оно работает так, как вы хотите.