handler.get()
handler.get()
方法是对 [[Get]]
对象内部方法 的陷阱,被 属性访问器 等操作使用。
¥The handler.get()
method is a trap for the [[Get]]
object internal method, which is used by operations such as property accessors.
Try it
语法
参数
返回值
描述
拦截
¥Interceptions
该陷阱可以拦截以下操作:
¥This trap can intercept these operations:
- 属性准入:
proxy[foo]
和proxy.bar
Reflect.get()
或调用 [[Get]]
内部方法 的任何其他操作。
¥Or any other operation that invokes the [[Get]]
internal method.
不变量
示例
获取属性价值的陷阱
¥Trap for getting a property value
以下代码捕获获取属性值的陷阱。
¥The following code traps getting a property value.
js
const p = new Proxy(
{},
{
get(target, property, receiver) {
console.log(`called: ${property}`);
return 10;
},
},
);
console.log(p.a);
// "called: a"
// 10
以下代码违反了不变量。
¥The following code violates an invariant.
js
const obj = {};
Object.defineProperty(obj, "a", {
configurable: false,
enumerable: false,
value: 10,
writable: false,
});
const p = new Proxy(obj, {
get(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
也可以看看
¥See also