ES6 memungkinkan untuk memperluas objek khusus. Jadi dimungkinkan untuk mewarisi dari fungsinya. Objek seperti itu dapat disebut sebagai fungsi, tetapi bagaimana cara mengimplementasikan logika untuk panggilan tersebut?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Setiap metode kelas mendapat referensi ke instance kelas melalui this
. Tapi ketika itu disebut sebagai fungsi, this
mengacu pada window
. Bagaimana saya bisa mendapatkan referensi ke instance kelas ketika itu disebut sebagai fungsi?
super(x)
(yaitu menyebarkannya ke Function
)? Tidak yakin apakah Function
benar-benar dapat diperpanjang.
Error
, antara lain.
Function
ini hanyalah konstruktor fungsi. Implementasi fungsi harus diteruskan ke konstruktor. Jika Anda tidak ingin Smth
menerima implementasi, Anda harus menyediakannya di konstruktor, yaitu super('function implementation here')
.
Function
konstruktor (runtime) yang sangat berbeda dari ekspresi fungsi (sintaks).