首页 > 其他分享 >Object.definePropoty()方法详解

Object.definePropoty()方法详解

时间:2023-03-16 21:46:15浏览次数:48  
标签:这个 target Object set 参数 definePropoty 详解

Object.definePropoty()方法有三个参数
第一个参数为:需要进行代理的目标对象 , target
第二个参数为:需要代理的这个对象中对应的"键"名 ,key
第三个参数为:{}一个配置项,这个配置项里面有一个get函数和一个set函数,当你对这个对象中的这个 value值进行操作的时候
比如,现在要拿到代理的对象中的一个属性,这个set函数就会执行并返回你想拿的那个属性,也就是相当于return target[key]
然后想要更改这个属性,那么他就会调用set函数,然后set函数接收一个参数,这个参数就是你修改之后的值,然后这个修改的值如果和上一次的值不一样,那么就更该这个value的值.

这个东西我进行了解的时候看的是vue2的源码;部分代码如下:
image

这个代码中其实是将这个对象中的每一个键值都进行了代理,当你取a值的时候其实a值已经准备好了,取b值的时候b值也准备好了.
他的值通过闭包得到了访问,然后,其实拿到是target中的这个值,更改的也是target中对应的值
这里涉及到的是一个闭包和一个引用数据类型的修改知识点

标签:这个,target,Object,set,参数,definePropoty,详解
From: https://www.cnblogs.com/yourgrandfather/p/17224234.html

相关文章

  • 血泪的线上bug,有关Object.fromEntries
    因为这个线上bug引发的反思:1,兼容性测试的重要性2,代码review的重要性3,技术敏感的重要性还有很多……因为出现线上bug,这个链路上每个人都有责任和需要学习的地方,而作为......
  • Linux根目录详解
    /  根目录:根目录,文件的最顶端,整个文件系统的根目录/bin  用户二进制文件:存放系统所需的重要命令/sbin  系统二进制文件:存放一些系统管理的命令,一般只能由超级......
  • Linux根目录详解
    /   根目录:根目录,文件的最顶端,整个文件系统的根目录/bin   用户二进制文件:存放系统所需的重要命令/sbin  系统二进制文件:存放一些系统管理的命令,一般只能由超级权......
  • 干货 | BitSail Connector 开发详解系列一:Source
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 BitSail是字节跳动自研的数据集成产品,支持多种异构数据源间的数据同步,并提供离......
  • Linux根目录下目录详解
    bin:  “一种文件格式的缩写”dev: “存储硬件设备信息目录”home:“宿主目录”lib64:“64位相关的一些比较特殊的一些库文件”mnt:“存储挂载设备的目录”proc ......
  • UsageStatsService详解
     1.概述UsageStatsService它是收集、聚合和保存应用程序使用数据的服务,这些数据可以被AppOps授权的应用查询。源码路径framework/base/services/usage/java/com/an......
  • 三、UserDetailsService详解
    当什么也没有配置的时候,账号和密码是由SpringSecurity定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。所以我们要通过自定义逻辑控制认证逻辑。​如......
  • 四、PasswordEncoder密码解析器详解
    ​ SpringSecurity要求容器中必须有PasswordEncoder实例。所以当自定义登录逻辑时要求必须给容器注入PaswordEncoder的bean对象1.接口介绍​encode():把参数按照特定......
  • 四、PasswordEncoder密码解析器详解
    ​ SpringSecurity要求容器中必须有PasswordEncoder实例。所以当自定义登录逻辑时要求必须给容器注入PaswordEncoder的bean对象1.接口介绍​encode():把参数按照特定......
  • SublimeREPL设置详解——实现代码传递(Eval in REPL)
    1.安装前题:安装packagecontrol,过程省略。windows10,python3.10(自定义的build),Sublimebuild4126。安装:packagecontrol安装sublimeREPL。2.测试2.1运行方......