2015-12-24 40 views
0
class Foo 
    list: [] 
foos = [] 
for i in [1..2] 
    foos.push new Foo 
foos[0].list.push "a" 
foos[1].list.push "a" 
console.log foos[0].list 
console.log foos[1].list 

這段代碼的輸出是:的CoffeeScript我怎麼可以實例屬性

["a", "a"] 
["a", "a"] 

但我不明白爲什麼輸出不是:

[ 「一」] [「一「]

似乎foos [k] .list是靜態參數!

回答

1

是的,list值是在所有foo實例之間共享的。

如果你看看生成的JS,對你有意義嗎?

Foo = (function() { 
    function Foo() {} 

    Foo.prototype.list = []; 

    return Foo; 

})(); 

如果我理解你正確地或許這是你的問題的一個有效的解決方案:

class Foo 
    constructor: -> 
    @list = [] 
相關問題