ES6 дозволяє розширювати спеціальні об'єкти. Тому можливо успадкувати від функції. Такий об’єкт можна назвати функцією, але як я можу реалізувати логіку такого виклику?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Будь-який метод класу отримує посилання на екземпляр класу через this
. Але коли він викликається функцією, this
посилається на window
. Як я можу отримати посилання на екземпляр класу, коли він викликається як функція?
super(x)
(тобто передайте його далі Function
)? Не впевнений, чи Function
насправді можна продовжити.
Error
, серед інших.
Function
це просто конструктор функцій. Реалізацію функції потрібно передати конструктору. Якщо ви не хочете Smth
прийняти реалізацію, ви повинні надати її в конструкторі, тобто super('function implementation here')
.
Function
конструктор (час виконання), який сильно відрізняється від виразу функції (синтаксису).