响应式原理基本代码

class Depend {
  constructor() {
    this.reactiveFns = [];
  }
  addDePend(reactiveFn) {
    this.reactiveFns.push(reactiveFn);
  }
  notify(receiver) {
    this.reactiveFns.forEach((fn) => fn(receiver));
  }
}

const depend = new Depend();

function wathcFn(fn) {
  depend.addDePend(fn);
}
wathcFn(function (receiver) {
  console.log(receiver);
  console.log("asd s ");
});
const obj = {
  name: "123",
  age: "11",
};

const objProxy = new Proxy(obj, {
  set: function (target, key, newValue, receiver) {
    Reflect.set(target, key, newValue, receiver);
    depend.notify(receiver);
  },
  get: function (target, key, receiver) {
    return Reflect.get(target, key);
  },
});
objProxy.name = "aa";
objProxy.name = "bbb";

{ name: 'aa', age: '11' }
asd s
{ name: 'bbb', age: '11' }
asd s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碑无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值