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конструктор (час виконання), який сильно відрізняється від виразу функції (синтаксису).