js监听数据的变化

js监听数据的变化

  • 一般来说,变量的值为基本数据类型时基本上没有办法去监听数据的变化,例如:
// 定义一个变量
let name = "tom"
// 变量name的值发生了改变
name = "jerry"
// 但是无法进行监听
  • 但是呢,变量的值为引用数据类型的时候就监听里面属性的数据变化
let vm = {
	name: "tom"
}
// vm里边的name实际上可以进行监听
Object.keys(vm).forEach(key => {
    definedAttribute(vm, key, vm[key])
})

function definedAttribute(vm, key, val){
    Object.defineProperty(vm, key, {
        enumerable: true,
        configurable: false,
        get(){
            return val
        },
        set(newVal){
            console.log("我监听到了数据的变化")
            if(val !== newVal){
                val = newVal
            }
        }
    })
}

// 更新vm里面的数据
vm.name = "jerry"

// 输出:
我监听到了数据的变化 // 成功进行了监听
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值