我刚刚进入 Coffee Script 并且在弄清楚类扩展的工作方式时遇到了问题。似乎在父类上定义为实例属性的属性在扩展该类时被实现为静态属性。
我有一个名为 Foo 的类,我想将其用作两个子类 Bar 和 Goo 的基类。我给 Foo 一个名为 foob 的实例属性和一个添加 foob 的方法,如下所示:
class Foo
foobs:[]
addFoob: (foob) ->
@foobs.push(foob)
我用 Bar 和 Goo 扩展 Foo,并创建新实例,如下所示:
class Bar extends Foo
otherMethod: ->
alert 'doing other stuff'
class Goo extends Foo
secondMethod: ->
alert 'doing second stuff'
barInstance = new Bar()
gooInstance = new Goo()
但是当我向 barInstance 添加一个 Foob 时,它也会被添加到 gooInstance!
barInstance.addFoob('test')
console.log gooInstance.foobs (outputs ["test"])
显然我在这里做错了什么。我希望 barInstance 和 gooInstance 都有自己的“foobs”属性,但由于某种原因,似乎即使 foobs 是 Foo 上的实例属性,它也被分配为 Bar 和 Goo 上的类属性。关于如何解决这个问题的任何想法?还是我不知道有不同的语法?
谢谢