代码示例:
const obj = {
firstName: 'liang',
lastName: 'cheng',
}
Object.defineProperty(obj, 'name', {
get: function () {
return this.firstName + this.lastName
},
set: setCb
})
function setCb (val) {
console.log(1)
}
function fn () {
obj.name = 'lc' // 触发setCb(obj.name)
console.log(2)
console.log(obj.name)
}
function fnn () {
obj.firstName = 'liang'
obj.lastName = 'c'
console.log(3)
console.log(obj.name)
}
// test
fn()
// 1
// 2
// liangcheng
fnn()
// 3
// liangc
复制代码
结论
- set 通过外部设置对象
define
的属性的值后,执行的回调函数,并不是修改属性的值,也不推荐在 set 方法中修改 - get 返回
deine
属性读到值
单项绑定和双向绑定待续。。。