【发布时间】:2011-12-02 19:15:25
【问题描述】:
我是 CoffeeScript 的新手(而且对 JS 也很缺乏经验;如果这太天真了,请见谅),我试图创建一个如下所示的类:
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())
我得到的输出是: “A、B、C” “甲、乙、丙、甲、乙、丙”
尽管创建了一个新的 'Test' 实例;数组被追加并且不被清除。我在这里做错了什么?我是不是初始化成员变量错了?
【问题讨论】:
-
你应该看看原型是如何工作的,看看javascript生成的代码。我在咖啡脚本中看到了很多这样的错误(即使在教程/食谱中)。我使用的规则是只在类成员中定义函数和静态属性(我在构造函数中使用@member 语法定义实例属性)。是的,考虑到关键字 class coffeescript 的使用,这有点令人困惑。
-
旁注:
getdata: -> @a.join('') -
感谢 Guillaume86 和 tokland。我从中学到了很多。
-
与该主题相关:TypeScript 以比咖啡脚本 IMO 更明智的方式实现实例成员,您可以在这里尝试:typescriptlang.org/Playground
标签: coffeescript