手摸手,教新手用proxy写一个最基础的发布订阅模式

这篇博客介绍了如何利用ES6的Proxy和Reflect创建一个简单的发布订阅模式。通过observe方法发布对象,并通过listen方法订阅事件。当对象的属性发生变化时,会触发订阅的函数执行。文中还提及了Vue框架如何利用类似思想实现数据更新时的视图同步。
摘要由CSDN通过智能技术生成

本文需要前置知识,es6的proxy和reflect的相关知识。

 

很多新手都不知道什么是发布订阅模式,或者说不知道有什么用,但是其实vue框架就是采用了发布订阅模式,当数据更新的时候去触发update方法更新视图的。

说白了,发布订阅模式就是,让js知道谁改变了,就做什么操作。

接下来就正式开始尝试写一个简单的发布订阅。

首先,我们有两个对象obja和objb,现在我修改他们的值,就仅仅是修改了他们本身的值,其它什么都不会发生,为了完成发布订阅模式,我需要写一个方法来订阅我想要订阅的对象

observe(objb)后,这个objb的对象就被发布了,但是发布之后我还要给它订阅事件,

我有好多事件 fun1,fun2...,我想要订阅什么方法就能给objb订阅什么方法,listen(fun1),fun1被订阅了之后,每当objb被修改了之后,就会触发fun1这个函数。

这样就完成了发布订阅的模式。

 

那么怎么写observe和listen这两个方法呢。

利用proxy可以对对象进行发布,重写proxy的set方法,即可完成当对象改变时,进行某些操作, 

const observe = obj => new Proxy(obj,{set})  //生成被发布的对象的方法

此步完成了发布想要发布的对象,这一函数、那么set中要做什么呢,发布订阅顾名思义是要执行被订阅的函数。

我们可以想到需要一个数组来存储所有被订阅的事件,然后依次执行这些事件。

con

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值