我刚刚进入咖啡脚本,并且在解决类扩展如何工作时遇到问题。看来,定义为父类的实例属性的属性在扩展该类时正在实现为静态属性。使咖啡脚本中的类扩展和实例属性有意义
我有一个名为Foo的类,我想用它作为两个子类Bar和Goo的基类。我给富实例属性称为foobs并添加foob,像这样的方法:
class Foo
foobs:[]
addFoob: (foob) ->
@foobs.push(foob)
我延长美孚酒吧和咕,并创造新的情况下,像这样:
class Bar extends Foo
otherMethod: ->
alert 'doing other stuff'
class Goo extends Foo
secondMethod: ->
alert 'doing second stuff'
barInstance = new Bar()
gooInstance = new Goo()
但是当我添加一个Foob到barInstance时,它也被添加到gooInstance!
barInstance.addFoob('test')
console.log gooInstance.foobs (outputs ["test"])
很明显,我在这里做错了什么。我希望barInstance和gooInstance每个都有自己的“foobs”属性,但由于某些原因,尽管foobs是Foo上的一个实例属性,但它被分配为Bar和Goo上的类属性。任何想法如何解决这个问题?或者也许有不同的语法,我不知道?
感谢
感谢您的所有答案!接受这个是因为方法参数(@foobs = [])的内联语法很酷,我总是为无法在JavaScript中执行而感到恼火。 – jraede 2013-04-09 03:29:32