Object.defineProperty

Object.defineProperty数据代理

<script>
        let num = 30
        let obj = {
            name: "张三",
            id: 1,
            // age:20,
        }
        //Object.defineProperty  给对象定义属性的方法  默认情况下此方法声明的属性不可枚举、不可修改、不可删除

        Object.defineProperty(obj, 'age', {
            // value:18,
            enumerable: true,//控制属性是否可以枚举,默认值时false
            writable: true,//控制属性是否可以被修改,默认值时false
            configurable: true,//控制属性是否可以删除,默认值时false


            //注:访问age时先走get/set函数,在展示age的值

            get() {//有人访问了obj.age时,get函数(getter)被执行,返回值就是age的值  (可以达age的值跟随着num的改变而改变)
                console.log("有人访问了obj.age")
                return num
            },
            set(value) {//有人修改obj.age时,set函数(setter)被执行,返回值就是age的值 
                console.log("有人修改了obj.age,且值为 " value)

                num = value//这时age和num关联起来了,一方改了,另一方也会改了


            }

        }
        )
        console.log(obj);
    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值