Задать вопрос
  • Какая разница между Дескрипторами и Proxy?

    @NeeProgram
    Дескрипторы - правила по которым работают свойства объекта - то, изменяемые они или нет
    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); }
    });
    ```
    Но на этом их свойства заканчиваются
    Написано