2011-01-06 98 views
2

我想弄清楚繼承如何在coffeescript中工作。這裏是我的代碼一個簡單的例子:CoffeeScript類繼承

class Parent 

    constructor: (attrs) -> 
    for own name,value of attrs 
     this[name] = value 

Parent.from_json_array = (json, callback) -> 
    for item in JSON.parse(json) 
    obj = new ChildA item # [1] 
    callback obj 

class ChildA extends Parent 

class ChildB extends Parent 

ChildA.from_json_array("[{foo: 1}, {foo: 2}]") (obj) -> 
    console.log obj.foo 

什麼我需要把上線標誌着[1]在這裏使用正確的子類?這可以工作,但只能創建一個原型爲ChildA的對象。我已經試過類似:

Parent.from_json_array = (json, callback) -> 
    klass = this.prototype 
    for item in JSON.parse(json) 
    obj = klass.constructor item # [1] 
    callback obj 

...但是這留下obj爲未定義在我的回調函數(類型錯誤:無法讀取的未定義的屬性「富」」

請告訴我魔法咒語中的CoffeeScript ?要能夠創建一個類,其中類是可變的新對象

回答

2

沒關係,我想通了:

Parent.from_json_array = (json, callback) -> 
    klass = this 
    for item in JSON.parse(json) 
    obj = new klass item 
    callback obj 

打開OU你可以只用new一個類存儲在一個變量中。我以爲我曾嘗試過這個,但得到一個語法錯誤。