请教发布订阅方式的问题

请教发布订阅方式的问题

发布订阅方式(适合多人协作):发布一则消息,并不是所有人都能接收到,只有订阅了消息的人才能接收到;其实跟上面的函数封装思想一样,只是把回调函数当作一个事件,绑定到了这个对象上(通过on方法)。这个对象自己发布消息,订阅消息,但是对象上的每个方法(人)不同,对象上有个特定的方法(人)发布消息,其他的方法(人)订阅消息。

本案例中先由另一个对象$(btn)通过点击事件触发silent.show($box)方法,告诉$box对象开始发布订阅消息,然后  $box.trigger('show')发布消息,接着$box.on('show',function(){})订阅消息,执行程序,shown同理。

总结:这个发布订阅方式跟原生js中的一个对象上创建多个方法,并且多个方法之间互相可以调用相似。

请问我这样理解的对吗?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你好同学,事件可以叫做方法,方法与事件的区别:

  1. 方法是代表对一个事情的处理,例如定义一个函数(函数可以叫做方法)hideDiv,里面写如何隐藏一个div,这就是对div进行隐藏的处理。如果想要执行,就要加括号调用。即hideDiv()。

  2. 事件是一个触发点,是通过某种动作触发的,例如单击、双击、鼠标划过等等。

祝学习愉快,望采纳。

好帮手慕夭夭 2019-10-11 19:10:21

你好同学,你理解的不对。show是一个事件,不是方法。trigger是js提供的一个方法,是用来触发指定事件的。show就是trigger的参数,即通过trigger触发这个事件。所以它们肯定不存在互相调用关系哦。

祝学习愉快,望采纳。

  • show事件是通过$box.on('show')定义的方法啊,它应该既是事件,也是方法把,这两者有什么区别吗?能结合代码说一下吗?
    2019-10-11 21:32:37
好帮手慕夭夭 2019-10-11 14:48:29

你好同学,上面理解的是对的,但是总结有一些问题。对象上创建多个方法,在一个方法中调用另一个方法,这个涉及到作用域的问题,即通过this访问的。例如在全局下定义一个对象,person调用aaa, 它里面的this指向的就是person,所以通过this,方法之间是可以相互调用的。

http://img1.sycdn.imooc.com//climg/5d9ffd8e09aca1c605610232.jpg

而本案例中,只是在事件中,调用了一个方法去触发,去通知。发布和订阅都是独立的,并不是相互调用的关系。跟对象中方法相互调用不是一回事,所以不要进行对比哦。

祝学习愉快,望采纳。

  • 老师的意思是$box对象可以调用这些方法,而trigger和'show'方法不能相互调用。但是$box.trigger('show')这里不是trigger方法调用了$box自定义的'show'方法吗?
    2019-10-11 14:59:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师