Дескрипторы - правила по которым работают свойства объекта - то, изменяемые они или нет
Proxy - это внешняя обертка, которая перехватывает обращение к основным действиям над объектом и его свойствами ([[Get]], [[Set]], [[Delete]], [[OwnPropertyKeys]] и т.д.) и позволяет их подменять
Proxy может подменять данные, но обязан следовать "правилам", которые устанавливает дескриптор
Дескрипторы работают на уровне отдельных свойств
Proxy работает на уровне всего объекта
Схожесть из-за которой многие не понимают и путают их - они оба перехватывают запись и чтение свойства - get и set
```
Object.defineProperty(obj, 'key', {
get() { return 42; },
set(val) { console.log(val); }
});
// Proxy
new Proxy(obj, {
get(target, key) { return 42; },
set(target, key, val) { console.log(val); }
});
```
Но на этом их свойства заканчиваются
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Proxy - это внешняя обертка, которая перехватывает обращение к основным действиям над объектом и его свойствами ([[Get]], [[Set]], [[Delete]], [[OwnPropertyKeys]] и т.д.) и позволяет их подменять
Proxy может подменять данные, но обязан следовать "правилам", которые устанавливает дескриптор
Дескрипторы работают на уровне отдельных свойств
Proxy работает на уровне всего объекта
Схожесть из-за которой многие не понимают и путают их - они оба перехватывают запись и чтение свойства - get и set
```
Object.defineProperty(obj, 'key', {
get() { return 42; },
set(val) { console.log(val); }
});
// Proxy
new Proxy(obj, {
get(target, key) { return 42; },
set(target, key, val) { console.log(val); }
});
```
Но на этом их свойства заканчиваются