Proxy  JS标准内置对象

const p = new Proxy(target, handler)

创建一个对象的代理:

let obj = {
a: {
b: {
c: 1
}
}
}
let proxy = new Proxy(obj, {})
console.log(proxy);

浏览器打印

Object.defineProperty()

直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

Object.defineProperty(obj, prop, descriptor)

重写一个对象:

const object1 = {};

        function df(o) {
Object.keys(o).forEach(key => {
Object.defineProperty(object1, key, {
set() {
object1[key] = obj[key];
if (typeof obj[key] === 'object') {
df(obj[key])
}
}
})
})
return o
}
let proxy1 = df(obj)
console.log(proxy1)

浏览器打印:

使用Object.defineProperty() 重写目标对象需先知道属性(prop),所以在VUE项目中,初始化后,给对象新增属性无法实现响应性。

Proxy代理只需要知道对象本身即可。对代理对象的操作会转发到源对象。

最新文章

  1. PHP JSON
  2. linux命令:df
  3. Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
  4. javascript_basic_04之节点、元素
  5. codevs1183泥泞的道路
  6. ajax转换成json参数
  7. 菜鸟程序员之Asp.net MVC Session过期异常的处理
  8. HTML内容整理
  9. javascript判断浏览器的版本
  10. Trianglify – 五彩缤纷的 SVG 背景图案
  11. Tomcat目录介绍以及运行时寻找class的顺序
  12. ORA-01652:无法通过128(在表空间TEMP中)扩展temp段
  13. (转)Java程序员应该了解的10个面向对象设计原则
  14. c++ 显示调用dll
  15. Java微信公众平台开发之OAuth2.0网页授权
  16. ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方案
  17. PyQt5实现界面跳转
  18. 浅谈MVC中的service层(转)
  19. MVC ScriptBundle自定义排序。
  20. JVM中垃圾收集算法总结

热门文章

  1. Android面试-字节一面
  2. P18_Day2.学习目标
  3. 钓鱼攻击之:OFFICE 宏后门文件钓鱼
  4. 下载、编译AspNetCore 的全过程
  5. Git与GitHub的快速使用
  6. hdfs file system shell的简单使用
  7. LeetCode算法训练-动态规划
  8. linux系统下,新加硬盘并把现有的/home目录扩容。
  9. axios 下载文件流或者预览在线pdf
  10. C++标准库string学习笔记