const proxyObj =newProxy(obj,key,receiver){get:function(target,key,receiver){return Reflect.get(target,key,receiver)},set:function(target,key,value,receiver){Reflect.set(target,key,value,receiver)const dep =getDepends(target,key)dep.notify()}
正确的依赖收集
我们之前收集依赖的地方是在 watchFn 中:
但是这种收集依赖的方式我们根本不知道是哪一个key的哪一个depend需要收集依赖;
你只能针对一个单独的depend对象来添加你的依赖对象;
那么正确的应该是在哪里收集呢?应该在我们调用了Proxy的get捕获器时
因为如果一个函数中使用了某个对象的key,那么它应该被收集依赖
let reactiveFn =nullfunctionwatchFn(fn){// dep.addDepend(fn)reactiveFn = fnfn()reactiveFn =null}
const proxyObj =newProxy(obj,{get:function(target,key,receiver){const dep =getDepends(target,key)dep.addDepend(reactiveFn)return Reflect.get(target,key,reaceiver)},set:function(target,key,value,receiver){Reflect.set(target,key,value,receiver)const dep =getDepends(target,key)dep.notify()}})
functionreactive(obj){returnnewProxy(obj,{get:function(target,key,receiver){const dep =getDepends(target,key)dep.depend()return Reflect.get(target,key,receiver)},set:function(target,key,value,receiver){Reflect.set(target,key,value,receiver)const dep =getDepends(target,key)dep.notify()}})}
functionreactive2(obj){Object.keys(obj).forEach(key=>{let value = obj[key]Object.defineProperty(obj,key,{get:function(){const dep =getDepends(obj,key)dep.depend()return value},set:function(newValue){const dep =getDepends(obj,key)value = newValuedep.notify()}})})return obj
}
加盖骑缝章的软件多种多样,尤其是针对PDF文件,有多种软件可以实现给PDF文件加盖自己的骑缝章。以下是一些常用的软件及其特点:
1. Adobe Acrobat Pro DC
特点:
多功能PDF编辑:Adobe Acrobat Pro DC是一款功能强大的…
HarmonyOS SDK运动健康服务(Health Service Kit)是为华为生态应用打造的基于华为帐号和用户授权的运动健康数据开放平台。在获取用户授权后,开发者可以使用运动健康服务提供的开放能力获取运动健康数据,基于多种类型数据构建运动健…
落谷4514 过关代码如下
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc.h>
using namespace std;
//#define int long longconst int N 2050;
int t1[N][N], t2[N][N], t3[N][N], t4[N][N];
int lowbit(int x) { return x & (-x); }
int n, m;
void update(…