首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Proxy.handler

处理器对象用来自定义代理对象的各种可代理操作。

方法

一共有 13?种可代理操作,每种操作的代号(属性名/方法名)和触发这种操作的方式列举如下。注意,如果没有定义某种操作,那么这种操作会被转发到目标对象身上。

handler.getPrototypeOf()在读取代理对象的原型时触发该操作,比如在执行?Object.getPrototypeOf(proxy)时。

handler.setPrototypeOf()在设置代理对象的原型时触发该操作,比如在执行?Object.setPrototypeOf(proxy, null)时。

handler.isExtensible()在判断一个代理对象是否是可扩展时触发该操作,比如在执行Object.isExtensible(proxy)时。

handler.preventExtensions()在让一个代理对象不可扩展时触发该操作,比如在执行Object.preventExtensions(proxy)时。

handler.getOwnPropertyDescriptor()在获取代理对象某个属性的属性描述时触发该操作,比如在执行Object.getOwnPropertyDescriptor(proxy, "foo")时。

handler.defineProperty()在定义代理对象某个属性时的属性描述时触发该操作,比如在执行Object.defineProperty(proxy, "foo", {})时。

handler.has()在判断代理对象是否拥有某个属性时触发该操作,比如在执行"foo"inproxy时。

handler.get()在读取代理对象的某个属性时触发该操作,比如在执行?proxy.foo时。

handler.set()在给代理对象的某个属性赋值时触发该操作,比如在执行?proxy.foo = 1时。

handler.deleteProperty()在删除代理对象的某个属性时触发该操作,比如在执行?delete proxy.foo时。

handler.ownKeys()在获取代理对象的所有属性键时触发该操作,比如在执行?Object.getOwnPropertyNames(proxy)时。

handler.apply()在调用一个目标对象为函数的代理对象时触发该操作,比如在执行?proxy()时。

handler.construct()在给一个目标对象为构造函数的代理对象构造实例时触发该操作,比如在执行new proxy()时。

一些非标准的陷阱已经过时,已被删除。

规范

Specification

Status

Comment

ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Proxy Object Internal Methods and Internal Slots' in that specification.

Standard

Initial definition.

ECMAScript Latest Draft (ECMA-262)The definition of 'Proxy Object Internal Methods and Internal Slots' in that specification.

Living Standard

The enumerate handler has been removed.

浏览器兼容性

Feature

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

49 1

18 (18)

12

36

10

Feature

Android

Chrome for Android

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

No support

No support

18 (18)

No support

No support

No support

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com