Tôi đang tạo ứng dụng Node.js bằng cách sử dụng coffeescript hướng đối tượng.Bản ghi: tự động tạo thể hiện của lớp mà phương thức được gọi trên
Tôi có một super class
với một phương pháp tĩnh như:
class RedisObject
@find: (id, cb) ->
client.HGETALL "#{@className()}|#{id}", (err, obj) =>
unless err
cb(new RedisObject(obj, false))
Có một lớp con như
class User extends RedisObject
Khi tôi gọi find()
trên User class
Tôi muốn nó vượt qua một thể hiện của User
thay của RedisObject
đến hàm gọi lại.
Tôi cố gắng để thực hiện điều này bằng cách nhận được tên lớp của lớp thực tế phương pháp này được gọi là trên bằng cách sử dụng
@constructor.name
và sử dụng eval()
để tạo ra một thể hiện từ nó - nhưng vấn đề là các lớp con sẽ không được xác định từ bên trong lớp cha.
Làm cách nào để nhận ra hành vi nhận các loại cá thể khác nhau được trả về theo phương pháp find
tùy thuộc vào lớp nào được gọi, mà không phải ghi đè lên từng lớp con?
cảm ơn! hoạt động hoàn hảo. – Matthias
Btw, "mới này" không phải là tài liệu tính năng, tôi không thể tìm thấy nó từ phần Lớp học. Nó thực sự hữu ích, nó nên được specced. – Ciantic