该园用来记录个人的学习内容,有些杂乱,谅解~嘿嘿~

Chloe

自学前端的小菜鸟一枚呀~
记录学习的知识

es6新特性 - Proxy

一、定义

  • 用于定义基本操作的自定义行为

二、本质

  1. 修改的是程序默认形为,就形同于在编程语言层面上做修改,属于元编程(meta programming)

  2. Proxy 亦是如此,用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)

三、用法

  1. Proxy为构造函数,用来生成Proxy实例
    var proxy = new Proxy(target, handler)

  2. 参数:

    • target表示所要拦截的目标对象(任何类型的对象,包括原生数组,函数,甚至另一个代理))

    • handler通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时代理 p 的行为

四、使用场景

  1. Proxy其功能非常类似于设计模式中的代理模式,常用功能如下:

    • 拦截和监视外部对对象的访问

    • 降低函数或类的复杂度

    • 在复杂操作前对操作进行校验或对所需资源进行管理

  2. 使用 Proxy 保障数据类型的准确性:

    • 声明了一个私有的 apiKey,便于 api 这个对象内部的方法调用,但不希望从外部也能够访问 api._apiKey
  3. 观察者模式(Observer mode)指的是函数自动观察数据对象,一旦对象有变化,函数就会自动执行:

    • observable函数返回一个原始对象的 Proxy代理,拦截赋值操作,触发充当观察者的各个函数
  4. 观察者函数都放进Set集合,当修改obj的值,在会set函数中拦截,自动执行Set所有的观察者

posted @   Chloe56  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示