一个对象代理另一个对象的读写操作,通过Object.defineProperty实现
// 被代理对象
let user1 = {
name:'李四',
sex:'男'
}
// 代理者
let user2 = {
name:'张三',
sex:'女'
}
// 给user2定义一个opt属性去代理user1
Object.defineProperty(user2,'opt',{
// 当读取opt属性时,get函数(getter)会被调用,且返回值
get() {
console.log("读取了opt值是",user1.name)
return user1.name
},
// 当修改opt属性时,set函数(setter)会被调用,且会收到修改的值
set(value) {
console.log("修改了opt值是",value)
user1.name = value
}
})
打开浏览器进行如下操作: