handler.get()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Метод handler.get()
является ловушкой для получения значения свойства.
Интерактивный пример
Syntax
const p = new Proxy(target, { get: function(target, property, receiver) { } });
Параметры
Возвращаемое значение
Метод get()
может возвращать значение.
Описание
Метод handler.get()
является ловушкой для получения значения свойства.
Перехват
Эта ловушка может перехватывать следующие операции:
- Доступ к свойству:
proxy[foo]
andproxy.bar
- Доступ к наследованному свойству:
Object.create(proxy)[foo]
Reflect.get()
Инварианты
Если следующие инварианты нарушены, то прокси выбросит TypeError
:
- Значение, сообщаемое для свойства, должно быть таким же, как значение соответствующего свойства целевого объекта, если свойство целевого объекта является неперезаписываемым, не настраиваемым свойством собственных данных.
- Значение, сообщаемое для свойства, должно быть undefined, если соответствующее свойство целевого объекта не является настраиваемым собственным свойством доступа, которое
undefined
как и его атрибут[[Get]]
attribute.
Примеры
Ловушка для получения значения свойства
Следующий код перехватывает получение значения свойства.
js
const p = new Proxy(
{},
{
get: function (target, property, receiver) {
console.log("called: " + property);
return 10;
},
},
);
console.log(p.a); // "called: a"
// 10
Следующий код нарушает инвариант.
js
const obj = {};
Object.defineProperty(obj, "a", {
configurable: false,
enumerable: false,
value: 10,
writable: false,
});
const p = new Proxy(obj, {
get: function (target, property) {
return 20;
},
});
p.a; // TypeError is thrown
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver |
Совместимость с браузерами
BCD tables only load in the browser