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
此代码输出为:
["a", "a"]
["a", "a"]
但我不明白为什么输出不是:
[""] [""]
似乎foos [k] .list是静态参数!
答案 0 :(得分:1)
是的, TypeError: list indices must be integers, not str
值在所有foo实例中共享。
如果你看一下生成的JS,它对你有意义吗?
list
如果我理解正确,也许这是解决问题的有效方法:
Foo = (function() {
function Foo() {}
Foo.prototype.list = [];
return Foo;
})();