数据代理Object.defineProperty()

45 阅读1分钟

数据代理:通过一个对象代理另外一个对象中的属性 主要使用存取描述符

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
        //数据代理:通过一个对象代理另一个对象中属性的操作(读/写)
    let obj1 = { x: 1 };
    let obj2 = { y: 2 };

    //通过obj2来读取或修改obj1里的x
    Object.defineProperty(obj2, 'x', {
        get() {
            console.log('有人要通过obj2读取obj1里的x');
            return obj1.x
        },

        set(val) {
            console.log('有人要通过obj2修改obj1里的x');
            obj1.x = val;
        }
    })

    console.log(obj1);
    console.log(obj2.x);

  </script>
</body>
</html>