Вызов функции экземпляра по умолчанию в JavaScript - PullRequest
0 голосов
/ 25 сентября 2018

Хорошо, я не уверен, что бы вы назвали это или что я должен был использовать в заголовке, но я пытаюсь сделать экземпляр класса, если он вызывается, одним из методов по умолчанию что-то вроде

class Something {
    method() {}
    another() {}
}

const instance = default(new Something(), "method");
instance(); // calls Something.prototype.method
instance.another(); // everything else should still exist

Это было бы что-то вроде клонирования всего прототипа в функциональном объекте или что-то, я не могу сейчас думать, спасибо заранее.

1 Ответ

0 голосов
/ 25 сентября 2018

Нет, вы не можете вызвать экземпляр, если это не функция.Не существует функции default, которая делает что-либо вызываемым.Вам нужно будет сделать

class Something {
    constructor() {
        return Object.setPrototypeOf(() => {
            // console.log("instance() was called")
        }, new.target.prototype);
    }
    method() {
        // console.log("instance.method() was called")
    }
    another() {}
}

, чтобы получить вызываемый экземпляр из new Something.И да, вы могли бы заставить эту функцию стрелки (которая в настоящее время пуста) отправлять на .method(), но вы могли бы просто поместить поведение прямо туда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...