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')