ES6——Proxy

一.作用
Proxy(代理期)用于修改某些操作的认行为(语言本身的操作才具备认值),因此属于一种“元编程”,即对编程语言进行二次编程

二.原理
Proxy可以理解成,在目标对象前架设一个拦截层”,外界对该对象的访问都必须先通过这层拦截
因此提供了一种机制,可以对外界的访问进行过滤和改写

三.基础语法
① 基础结构
let proxy = new Proxy(target, handler);
target:要拦截的目标对象
handlerObject,定义要拦截的行为
② 示例

let obj = {};
let objProxy = new Proxy(obj, {
    get(target, prop, self) {
        return 1;
    }
});
console.log(objProxy.name); // 1
console.log(objProxy.age); // 2

四.支持拦截操作
get(target, prop, self)
作用:拦截对象属性的读取

set(target, prop, value, receiver)
作用:拦截对象属性的设置
返回:Boolean

has(target, prop)
作用:拦截in
返回:Boolean

deleteProperty(target, prop)
作用:拦截delete
返回:Boolean

ownKeys(target)
作用:拦截自有属性的遍历
返回:Array

getownPropertyDescriptor(target, prop)
作用:拦截Object.getownPropertyDescriptor
返回:Object属性的描述对象

defineProperty(target, prop, propDesc)
作用:拦截Object.defineProperty、Object.defineProperties
返回:Boolean

setPrototypeOf(target, proto)
作用:拦截Object.setPrototypeOf
返回:Object

getPrototypeOf(target)
作用:拦截Object.getPrototypeOf
返回:Object

preventExtensions(target)
作用:拦截Object.preventExtensions
返回:Boolean

⑩①isExtensible(target)
作用:拦截Object.isExtensible
返回:Boolean

⑩②apply(target, obj, args)
作用:拦截call、apply

⑩③construct(target, args)
作用:拦截Proxy实例作为构造函数调用
返回:Object

相关文章

原文连接:https://www.cnblogs.com/dupd/p/5951311.htmlES6...
以为Es6,javascript第一次支持了module。ES6的模块化分为导...
视频讲解关于异步处理,ES5的回调使我们陷入地狱,ES6的Prom...
TypeScript什么是TypeScript?TypeScript是由微软开发的一款开...
export class AppComponent { title = 'Tour of heroes...
用 async/await 来处理异步昨天看了一篇vue的教程,作者用as...