Задать вопрос
@KononovD

Почему construct не реагирует на new и почему get() срабатывает 4 раза подряд?

Здравствуйте!
Есть следующий код:
/* global Proxy */
// файл 1 экспортирует класс 
class EmailParser {
    constructor(str) {
        this.email = str;
        return new Proxy(this, {
            construct(target, value) {
                console.log("constructim");
                return new target(...value);
            },
            get(target, name) {
                console.log("gettim");
                return target[name];
            },
            set(target, name, value) {
                console.log("settim");

                target[name] = value;
                return true;
            }            
        })
    }
}

// export {
//     EmailParser
// };

// import {EmailParser} from './emailParser';

//файл 2 импортирует класс

let parser = new EmailParser('someEmail@example.com');
console.log(parser.email);

parser.email = "someEmail2@example2.com";
console.log(parser.email);

console.log(new EmailParser("email"));

или
https://codepen.io/Kononov_D/pen/jJYrdj?editors=1010
Кому как удобно)

В коносль выводится следующее:
5c89115a12fb6695612282.png
Причем этот лог с codePen, на пк нет этих 4х срабатываний геттера, в консоли, по крайней мере.

Так вот в чем вопрос:
Почему construct не отрабатывает создание нового экземпляра?
  • Вопрос задан
  • 129 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Коротко: прокси создаётся внутри new, а должен оборачивать класс EmailParser
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы