• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Yancy00

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

数据代理

数据代理
<script>
        let zhang3 = {
            name: "法外狂徒-张三",
            gender: '男'
        }

        let num=37

        // 给对象追加一个age属性,值为18
        Object.defineProperty(zhang3, 'age', {
            get(){  //当有人读取zhang3的age属性时调用此get()函数
                return num  //返回值就是age的值. 
            },
            set(val){ //当有人修改zhang3的age属性时调用此set()函数
                num=val
            },
            // value: 18,         //值
            // enumerable: true,  //可以枚举  默认为: false
            // writable: true,     //可被修改  默认为: false
            // configurable: true  //可被删除  默认为: false
        })

        console.log(zhang3.age);
        zhang3.age=100
        console.log(num);

    </script>

vue中的数据代理:

  • 将用户配置在data中的数据.通过一次赋值交给 vm._data,

  • 通过defineProperty() 给vm上添加属性'name',

    • vm.name的getter里把vm.data.name返回
    • 通过vm.name='xxx' 设置值时, 进行 vm._data.name='xxx'赋值

数据代理目的: 为了让写在模板里的代码更简洁.

<body>
<div id="app">
    {{name}},{{age}}
</div>
<script>
    const vm = new Vue({
        el: "#app",
        data: {
            name: 'Yancy',
            age: 37
        }
    })
</script>
</body>

posted on 2023-09-13 07:49  Yancy00  阅读(24)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3