Я пытаюсь выяснить, как наследование работает в coffeescript. Вот упрощенный пример моего кода:Наследование класса CodeScript
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 ? чтобы быть в состоянии создать новый объект класса, где класс является переменной