js设计一个带开关的时钟_js设计模式:观察者模式,一个小例子帮忙理解一下。...

首先定义一个构造函数,叫Observe,给构造函数添加一个属性dep,用于收集所有的订阅者,并在原型上添加一个patch方法,用于发布信息。

在这里我想解释一个小概念:所谓的订阅者(观察者),其实就是我们接到数据后进行处理的函数,Observe中的dep属性,收集的就是这一堆回调函数。

因此,我们的patch方法很简单,就是遍历dep中收集的回调函数(订阅者/观察者),并依次调用。

为了方便我们任何一个函数都可以做为观察者使用,直接在Function构造函数的原型上添加两个方法,一个叫subscribe(订阅),一个叫unsubscribe(取消订阅)。

在我们自定义的函数上调用subscribe方法:遍历我们传入的Observe实例中的dep属性,判断当前函数是否已经被dep收集,若没有被收集,则将当前函数加入到dep数组中。

在我们自定义的函数上调用unsubscribe方法:过滤我们传入的Observe实例中的dep属性(将当前函数剔除)。

图省事儿,我这边用vue项目进行演示。

图一是定义Observe构造函数,并为Function原型添加subscribe,unsubscribe方法。

图二是在vue中使用。

图三是演示效果(演示需要输入框回车才会patch信息)。

0df01d7a5f9d96a7549b4018c9d11f11.png
9ea633af8aac8789042bea6531622f7c.png
a721de48ca10131cb8948d2cf82f80c5.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值