码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 为什么vue3要选用proxy,好处是什么?


    提问

    1. Object.defineProperty()和proxy的区别?
    2. 为什么vue3要选用proxy,好处是什么?

    proxy

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

    Proxy的用法,这个大家都知道

    const p = new Proxy(target, handler)
    
    • 1

    剖析一下内部实现 ECMAScript 2017 (ECMA-262)
    在这里插入图片描述

    可以看到接收两个参数(target,handler)

    1. 如果target是undefined,报错
    2. 运行ProxyCreate(target, handler)

    下面是ProxyCreate的实现

    在这里插入图片描述

    排除一下错误处理,核心代码从5开始
    先创建一个新的空对象p,

    设置p对象的内部方法(除了[call]]和[[Construct]])设置为[9.5指定的定义,

    然后设置p的call和Construct方法,

    再设置内部属性[[ProxyTarget]]和[[ProxyHandler]]

    返回对象p

    我们可以用它们拦截什么?

    对于对象的大多数操作,JavaScript 规范中有一个所谓的“内部方法”,它描述了最底层的工作方式。例如 [[Get]],用于读取属性的内部方法,[[Set]],用于写入属性的内部方法,等等。这些方法仅在规范中使用,我们不能直接通过方法名调用它们。

    Proxy 捕捉器会拦截这些方法的调用。它们在 proxy 规范 和下表中被列出。

    对于每个内部方法,此表中都有一个捕捉器:可用于添加到 new Proxy 的 handler 参数中以拦截操作的方法名称:

    对于对象的大多数操作,JavaScript 规范中有一个所谓的“内部方法”,它描述了最底层的工作方式。例如 [[Get]],用于读取属性的内部方法,[[Set]],用于写入属性的内部方法,等等。这些方法仅在规范中使用,我们不能直接通过方法名调用它们。

    Proxy 捕捉器会拦截这些方法的调用。它们在 proxy 规范 和下表中被列出。

    对于每个内部方法,此表中都有一个捕捉器:可用于添加到 new Proxy 的 handler 参数中以拦截操作的方法名称:

    内部方法 Handler 方法 何时触发
    [[Get]] get 读取属性
    [[Set]] set 写入属性
    [[HasProperty]] has in 操作符
    [[Delete]] deleteProperty delete 操作符
    [[Call]] apply 函数调用
    <
  • 相关阅读:
    《从零开始的Java世界》03面向对象(进阶)
    竞赛 大数据疫情分析及可视化系统
    基于LADRC自抗扰控制的VSG三相逆变器预同步并网控制策略(Simulink仿真实现)
    【逗老师的无线电】MOTOTRBO CPS导入DMR ID通信录的骚操作
    阿里巴巴核心部门 1234 面(Java 岗):并发 +CAS+ 算法 +JVM+ 缓存
    【修车案例】一波形一案例(10)
    【漏洞复现】IP-guard WebServer 远程命令执行
    “智能+”时代,深维智信如何借助阿里云打造AI内容生成系统
    [答疑]改善系统的性能,用得着业务建模吗
    中国VOCs催化剂行业研究与投资战略报告(2022版)
  • 原文地址:https://blog.csdn.net/hellocoder2029/article/details/127920849
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号