私は、コーヒースクリプトで継承がどのように機能するかを理解しようとしています。これが私のコードの簡単な例です:
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
は私のコールバック関数で未定義のままになります(TypeError:undefinedのプロパティ'foo'を読み取ることができません"。
クラスが可変であるクラスの新しいオブジェクトを作成できるようにするためのCoffeeScriptの魔法の呪文は何ですか?