Skip to content

Commit

Permalink
闭包
Browse files Browse the repository at this point in the history
  • Loading branch information
wuyw committed Apr 8, 2019
1 parent 6c33d3d commit dee4803
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
6 changes: 3 additions & 3 deletions JavaScript/Proxy/1.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
let data = {
name: '渣渣辉'
};
class Dep {
constructor() {
this.subs = new Map();
Expand Down Expand Up @@ -62,6 +59,9 @@ function Observer(obj) {
};
return new Proxy(obj, handler)
}
let data = {
name: '渣渣辉'
};
function print1(data) {
console.log('我系', data);
}
Expand Down
8 changes: 8 additions & 0 deletions JavaScript/js基础/闭包/1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

// for (var i = 0; i < 5; i++) {
// (function (n) {
// setTimeout(_ => {
// console.log(n);
// }, n * 1000)
// })(i)
// }
4 changes: 2 additions & 2 deletions vue/mvvm/1.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

但是对于刚接触或者了解不多的同学来说,可能还会感到困惑:为什么不能检测到对象属性的添加或删除?为什么不支持通过索引设置数组成员?相信看完本期文章,你一定会豁然开朗。

本文会结合 Vue 源码,针对整个响应式原理一步步深入,这样就算是刚接触的同学也能跟下来。当然,如果你已经对响应式原理有一些认识和了解,大可以 **直接前往实现部分 [MVVM](#MVVM)**
本文会结合 Vue 源码分析,针对整个响应式原理一步步深入。当然,如果你已经对响应式原理有一些认识和了解,大可以 **直接前往实现部分 [MVVM](#MVVM)**

**文章仓库和源码都在 [🍹🍰 fe-code](https://github.com/wuyawei/fe-code),欢迎 star**

Expand Down Expand Up @@ -512,7 +512,7 @@ export default class Watcher {
```
到这里,我们可以大概总结一些整个响应式系统的流程,也是我们常说的 **观察者模式**:第一步当然是通过 observer 进行数据劫持,然后在需要订阅的地方(如:模版编译),添加观察者(watcher),并立刻通过取值操作触发指定属性的 getter 方法,从而将观察者添加进 Dep (利用了闭包的特性,进行依赖收集),然后在 Setter 触发的时候,进行 notify,通知给所有观察者并进行相应的 update。
我们可以这这么理解:Dep 就好比是掘金,掘金有很多作者(相当于 data 的很多属性)。我们自然都是充当订阅者(watcher)角色,在掘金(Dep)这里关注了我们感兴趣的作者,比如:江三疯,告诉它江三疯更新了就提醒我去看。那么每当江三疯有新内容时,我们都会收到类似这样的提醒:`江三疯发布了【2019 前端进阶之路 ***`,然后我们就可以去看了。
我们可以这么理解 **观察者模式**:Dep 就好比是掘金,掘金有很多作者(相当于 data 的很多属性)。我们自然都是充当订阅者(watcher)角色,在掘金(Dep)这里关注了我们感兴趣的作者,比如:江三疯,告诉它江三疯更新了就提醒我去看。那么每当江三疯有新内容时,我们都会收到类似这样的提醒:`江三疯发布了【2019 前端进阶之路 ***`,然后我们就可以去看了。
但是,每个 watcher 可以订阅很多作者,每个作者也都会更新文章。那么没有关注江三疯的用户会收到提醒吗 ?不会,只给已经订阅了的用户发送提醒,而且只有江三疯更新了才提醒,你订阅的是江三疯,可是站长更新了需要提醒你吗?当然不需要。这,也就是闭包需要做的事情。
## Proxy
Expand Down

0 comments on commit dee4803

Please sign in to comment.