请教发布订阅方式的问题

来源:2-3 静静的显示和隐藏(2)

weixin_慕的地5241954

2019-10-11 02:07:56

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

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

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

请问我这样理解的对吗?

写回答

3回答

好帮手慕夭夭

2019-10-12

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

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

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

祝学习愉快,望采纳。

0

好帮手慕夭夭

2019-10-11

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

http://img.mukewang.com/climg/5d9ffd8e09aca1c605610232.jpg

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

祝学习愉快,望采纳。

1
heixin_慕的地5241954
h 老师的意思是$box对象可以调用这些方法,而trigger和'show'方法不能相互调用。但是$box.trigger('show')这里不是trigger方法调用了$box自定义的'show'方法吗?
h019-10-11
共1条回复

好帮手慕夭夭

2019-10-11

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

祝学习愉快,望采纳。

0
heixin_慕的地5241954
h show事件是通过$box.on('show')定义的方法啊,它应该既是事件,也是方法把,这两者有什么区别吗?能结合代码说一下吗?
h019-10-11
共1条回复

0 学习 · 14456 问题

查看课程