js 监听数据的变化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 监听数据的变化
* @param obj 需要监听的对象
* @param name 需要监听的属性
* @param func 数据变化后的回调函数
*/
export const watch = (obj: Obj, name: string, func: (value: any) => void) => {
Object.defineProperty(obj, name, {
get: function() {
return obj;
},
set: newValue => {
func && func(newValue);
},
});
};

使用例子:

1
2
3
4
5
6
const obj = {
name: 123
};
watch(obj, 'name', newValue => {
console.log('name 被改变了')
});