الوراثة الفئة Coffescript
-
30-09-2019 - |
سؤال
أحاول معرفة كيفية عمل الميراث في Coffescript. إليك مثال مبسط على الكود الخاص بي:
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" من غير المحددة ".
ما هو التعويذ السحري في Coffescript ليكون قادرًا على إنشاء كائن جديد لفصل ، حيث يكون الفصل متغيرًا؟
المحلول
فما باللك ، لقد اكتشفت ذلك:
Parent.from_json_array = (json, callback) ->
klass = this
for item in JSON.parse(json)
obj = new klass item
callback obj
تبين أنه يمكنك فقط new
فئة مخزنة في متغير. اعتقدت أنني جربت هذا من قبل ، لكنني كنت أحصل على خطأ في بناء الجملة.
لا تنتمي إلى StackOverflow