ES6 Proxy регистрирует необъяснимое дополнительное значение

До сих пор я понимал прокси-серверы ES6 как способ добавления перехватов, чтобы позволить вам добавить пользовательское поведение в ваш код. Реализован этот фрагмент кода для перехвата толчка в массив, но он регистрирует дополнительные "захваченные"! 1'после толчка, и я не могу понять, почему. Кто-нибудь знает, почему это происходит? И значит ли это, что код в ловушке запускается дважды?

const handler = {
  set(target, propertyKey, value, receiver) {
    console.log('trapped!', value);
    return Reflect.set(target, propertyKey, value, receiver);
  }
};

const p = new Proxy([], handler);
p.push('a')

1 ответ

Решение

Он устанавливает длину, а также индекс массива, на который вы нажимаете. Вот почему он работает дважды для каждого толчка.

let handler = {
  set(target, propertyKey, value, receiver) {
    console.log(`set ${propertyKey} to ${value}`)
    return Reflect.set(target, propertyKey, value, receiver);
  }
};

const p = new Proxy([], handler);
p.push('a')
Другие вопросы по тегам