6、数据代理之Object.definePrpperty方法回顾

在这里插入图片描述
number和person明明是两个东西,它就是借助defineProperty,让其之间产生关联。值是现用现取。取是get,改是set

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 定义属性方法 -->
    <title>回顾Object.defineproperty方法</title>
    
</head>
<body>
    <script>
        number=20
        let person={    // let声明的范围是块作用域,是局部变量;而var声明的范围是函数作用域,是全局变量
            name:'张三',
            sex:'男',
        }
        
        //给person对象再添加一个age属性,值为18
        Object.defineProperty(person,'age',{    //虽然写法复杂,但是可以对追加的属性能枚举、修改和删除
            //value:18,
            // enumerable:true,     // 可枚举的,控制属性是否可以枚举,默认值是false       console.log(Object.keys(person))
            // writable:true,      //控制属性是否可以被修改,默认值是false     person.age=19
            // configurable:true,   //控制属性是否可以被删除,默认值是false     delete person.age

        
        
             //这是vue的双向绑定原理
            //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
            get(){
                console.log('有人读取age属性了')
                return number
            },

             //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
             set(value){
                console.log('有人修改了age属性,且值是',value)
                number=value
             }



        })
        console.log(person)

        console.log(Object.keys(person))

        // for (let key in person) {
        //     console.log('@',person[key])
        // }
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值