coffeescriptクラスの継承
-
30-09-2019 - |
質問
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
私のコールバック関数で定義されていないように(TypeError:未定義のプロパティ「foo」を読むことができません」。
Coffeescriptの魔法の呪文は、クラスが変動するクラスの新しいオブジェクトを作成できるのは何ですか?
解決
気にしないで、私はそれを理解しました:
Parent.from_json_array = (json, callback) ->
klass = this
for item in JSON.parse(json)
obj = new klass item
callback obj
あなたはただできることがわかります new
変数に保存されているクラス。以前にこれを試したことがありましたが、構文エラーが発生していました。
所属していません StackOverflow