let obj = {
key_1: 1,
key_2: 2
}
function func(key) {
console.log(key + ' 的值发生改变:' + this[key]);
}
const bindData = (obj, func) => {
Object.keys(obj).forEach(key => {
let val = obj[key];
Object.defineProperty(obj, key, {
get() {
return val;
},
set(newVal) {
val = newVal;
func.bind(obj)(key);
}
})
})
}
bindData(obj, func);
obj.key_1 = 2; // 此时自动输出 "key_1 的值发生改变:2"
obj.key_2 = 1; // 此时自动输出 "key_2 的值发生改变:1"