实现一个极简的数据响应式
<h5>实现一个极简的数据响应式</h5>
<h5>题目描述</h5>
<pre><code>// 有一个全局变量 a,有一个全局函数 b,实现一个方法bindData,执行后,a中任何属性值修改都会触发b的执行。
const a = {
b: 1
};
function b() {
console.log("a的值发生改变");
}
bindData();
// 此时输出 a的值发生改变
a.b = 2;
console.log(a.b);
</code></pre>
<pre><code>function bindData(){
Object.keys(a).map(key => {
let v = a[key];
Object.defineProperty(a,key,{
get(){
return v;
}
set(newVal){
if(v !== newVal){
b();
v = newVal
}
}
})
})
}</code></pre>