Coffeescript Klassenvererbung
-
30-09-2019 - |
Frage
Ich versuche, herauszufinden, wie Vererbung in Coffeescript funktioniert. Hier ist ein vereinfachtes Beispiel meines Code:
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
Was muss ich auf der Linie markiert [1]
setzen die richtige Kind Klasse hier zu benutzen? Dies funktioniert, aber nur erstellten Objekte mit einem Prototyp von ChildA
. Ich habe versucht, so etwas wie:
Parent.from_json_array = (json, callback) ->
klass = this.prototype
for item in JSON.parse(json)
obj = klass.constructor item # [1]
callback obj
... aber diese Blätter obj
wie in meiner Callback-Funktion (Typeerror undefined:. Kann nicht Eigentum 'foo' undefinierten lesen“
Was ist der Zauberspruch in Coffeescript in der Lage sein, ein neues Objekt einer Klasse zu erstellen, in dem die Klassenvariable ist?
Lösung
Nevermind, ich es herausgefunden:
Parent.from_json_array = (json, callback) ->
klass = this
for item in JSON.parse(json)
obj = new klass item
callback obj
Stellt sich heraus, man kann nur eine Klasse in einer Variablen gespeichert new
. Ich dachte, ich vorher versucht hatte, war aber einen Syntaxfehler zu bekommen.