Y (или другой инструмент) поверх этого чтоб вызывая Y.do1() вызывался X.do1() с оберткой в виде (before(); X.do1(); after()) ?
ключевое слово super? В доках же с самого начала есть про это
в super не нашел как вызывать родительские функции по переменной, т.е. не пречисляя все функции в дочке. через прокси есть такое const hmHandler = { get: async function(target:hmClient, name: keyof hmClient) { store.log(before - ${name.toString()},'orange'); const response = await target[name]; store.log(after - ${name.toString()},'orange'); return response; } } this.api = new Proxy(new hmClient(process.env.VUE_API_URL, store.axios), hmHandler); оно работает пока не используешь async/await. иначе return уже не promise по определению.... решение найдено на уровне axios самого (iterceptors). Но все еще интересно как завернуть один класс в другой с перехватом. Чтоб из класса Y можно было вызывать методы класса X и вокруг еще дебаг делать =)
все-таки может кто подскажет?
да, можно сделать обычное переопределение метода, в котором в нужный момент нужно будет сделать super.method() это если с классами
вот на примерах все ломается. мне надо так чтоб как в прокси - вызвать из класса Y любой метод класса Х при этом перед и после выполнения выполнить ещё действия. т. е. Y.do1() { before(); x.do1(); after();} чтоб do1 do2 не нужно было вручную вводить
используй декораторы
пример любой гугла с примерным контекстом. 3 часа гуглю и спрашиваю)
//readonly decorator function function readOnly(target, name, descriptor) { descriptor.writable = false; return descriptor; } class Book { //Implementation here @readOnly getBook() { return `[${this.name}][${this.ISBN}]`; } } let obj = new Book("HP", "1245-533552"); obj.getBook = "Hello"; console.log(obj.getBook()); //[HP][1245-533552]
https://youtu.be/En7pWi2fSzs
https://youtu.be/2h9syXN5wO0
Обсуждают сегодня