首页 / 知识
vue2.0 响应式编程分析demo
2023-04-11 13:23:00

vue2.0 使用了 Object.defineProterty 将data中的属性遍历并转化为getter 和 setter, 并且在getter中将使用数据的上下文进行一次收集,我们称之为依赖收集。
而在setter中就会触发依赖更新的操作,让在模板中可能会有多处随该依赖变化,所以我们将所有地方都收集起来,等待更新的时候进行一次批量操作。
下面是demo演示
(function () {
let x;
let y;
let f = n => n * 100 + 200;
let active;
let onXChanged = function (cb) {
active = cb;
active();
active = null;
}
// 收集更多依赖
class Dep {
// 依赖收集,将响应依赖添加到deps中
constructor() {
this.deps = new Set();
}
depend() {
if (active) {
this.deps.add(active)
}
}
// 对当前deps中依赖一次执行
notify() {
this.deps.forEach(dep => dep())
}
}
let ref = initValue => {
let value = initValue;
let dep = new Dep();
return Object.defineProperty({}, "value", {
get() {
dep.depend();
return value;
},
set(newValue) {
value = newValue;
dep.notify()
}
})
}
x = ref(1);
onXChanged(() => {
y = f(x.value);
console.log(y);
});
x.value = 2;
x.value = 3;
})()
|
最新内容
相关内容
python如何使用return语句
python如何使用return语句,地址,位置,情况,培训,函数,分析,控制权,地方,变量,语句,return语句就是讲结果返回到调用的地方,并把程序的控制权一python函数的高级使用方法
python函数的高级使用方法,代码,函数,灵活,数据,培训,时间,定义,程序,赋值,变量,Python的函数是“一等公民”,因此函数本身也是一个对象,函数既python什么是格式化
python什么是格式化,位置,数字,地方,代码,培训,评论,第一,整数,字符串,方法,本文总结一下python格式化文本的方法,需要的小伙伴可以参考。1、python字符串有哪些表达方式
python字符串有哪些表达方式,培训,字符串,斜线,方式,引号,备注,字符,中间,后面,表示,主要是python中字符串的几种表达,表示方式。python的几种python如何使用python发送邮件和接
python如何使用python发送邮件和接收邮件?,培训,状态,信息,代码,号码,工作,邮件,函数,尺寸,模块,发邮件是大家工作中最常用到的。今天来看一python如何使用python的help函数
python如何使用python的help函数,培训,函数,代码,基础知识,模块,参数,方法,用途,问题,括号,help函数是python的一个内置函数,在python基础知识python如何使用import
python如何使用import,培训,代码,模块,位置,标准,语句,函数,作用,方法,语法,python中的import语句是用来导入模块的,在python模块库中有着大量python新式类和旧式类区别
python新式类和旧式类区别,代码,培训,统一,最新,地方,旧式,经典,实例,属性,区别,python的新式类是2.2版本引进来的,我们可以将之前的类叫做经pythonTKinter弹出式菜单的使用
pythonTKinter弹出式菜单的使用,培训,位置,系统,菜单,东坡,汽锅,参数,事件,肘子,上下文,1、弹出菜单也叫上下文菜单,建立菜单并向菜单添加各种python使用协程的缺点
python使用协程的缺点,培训,数据,缺点,来回,实例,本质,以上,过程,任务,两个,python使用协程的缺点1、多核资源不能使用:协程的本质是单线程,它python海象运算符的使用
python海象运算符的使用,培训,代码,海象,赋值,操作,可读性,条件下,表达式,意义,以上,python海象运算符的使用1、在判断条件下允许操作。在一python实例方法的使用注意
python实例方法的使用注意,培训,实例,方法,对象,定义,以上,参数,更多,内容,python实例方法的使用注意1、实例方法是从属于实例对象的方法,定