Ответ 1
Когда вы определяете 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())
Попробуйте это, и вы обнаружите, что он работает так, как вы хотите.