Я решил отдохнуть от блогов 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”