Рубрики
Без рубрики

JavaScript Proxy

Я решил отдохнуть от блогов Bash, которые я писал, чтобы осветить то, что я недавно дискотел … С меткой JavaScript.

Я решил отдохнуть от блогов Bash, которые я писал, чтобы осветить то, что я недавно обнаружил, проходя через мир JavaScript, Proxies.

Что такое прокси

Прокси JavaScript – это объект, который оборачивается вокруг другого объекта и перехватывает/переопределяет любую операцию на нем. Так что, другими словами, прокси наблюдает, что происходит с объектом, и проводит методы, определяемые программистом. Чтобы создать прокси, вам нужен объект и функция обработчика. Пример показан ниже

Пример:

const proxy1 = new Proxy(target, handler)

Цель – это объект, который вы пытаетесь контролировать, используя определяющий обработчик. Обработчик обычно поддается четырем категориям: поиск, назначение, перечисление и призывы к функциям. Эти функции могут реализовать методы, называемые ловушками. В этой статье я расскажу get () и set ().

get () Пример:

const user = {
    firstName: 'John',
    lastName: 'Doe',
    email: 'john.doe@example.com',
}

const handler = {
    get(target, property) {
        return property === 'fullName' ?
            `${target.firstName} ${target.lastName}` :
            target[property];
    }
};

let proxy = new Proxy(target, handler);
console.log(proxy.fullName) //=> John Doe

Ловушка GET вызывается, когда доступ к объекту доступ к прокси -элементу. Он принимает объект и свойство, которое называется, а затем возвращает различные типы информации; Даже то, что изначально не хранилось в объекте (например, полное имя).

set () Пример:

Уставная ловушка управляет поведением на объекте при изменении свойства.

const triangle = {
    base: 100,
    height: 50,
}

const handler = {
    get: function (target, property){
        if(property === 'area'){
           return 0.5*target.base*target.height
        }
        return target[property]
    },
    set: function (target, property, value) {
            if (typeof value !== 'number') {
                throw new Error(`${property} must be a number.`);
            }
            if (value < 0) {
                throw new Error(`The ${property} must be 18 or older.`)
            }
        }
        target[property] = value;
    }
};

const proxyUser = new Proxy(triangle, handler);

Другие ловушки

  • применять()
  • конструкция
  • GetPrototypeof
  • SetPrototypeof
  • Isextensible
  • Предотвращение
  • GetownPropertyDescriptor

Теперь я знаю, что многое из этого может быть создано через занятия сейчас, но я знаю, что есть некоторые Места, где легкий настраиваемый прокси был отличным вариантом. Если вы согласны с этим, вот еще один ресурс Анкет Спасибо за чтение, и он вернулся в Bash на следующей неделе. Тогда увидимся.

Оригинал: “https://dev.to/dmarcr1997/javascript-proxy-1nf7”