请教发布订阅方式的问题
来源: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回答
你好同学,事件可以叫做方法,方法与事件的区别:
方法是代表对一个事情的处理,例如定义一个函数(函数可以叫做方法)hideDiv,里面写如何隐藏一个div,这就是对div进行隐藏的处理。如果想要执行,就要加括号调用。即hideDiv()。
事件是一个触发点,是通过某种动作触发的,例如单击、双击、鼠标划过等等。
祝学习愉快,望采纳。
好帮手慕夭夭
2019-10-11
你好同学,上面理解的是对的,但是总结有一些问题。对象上创建多个方法,在一个方法中调用另一个方法,这个涉及到作用域的问题,即通过this访问的。例如在全局下定义一个对象,person调用aaa, 它里面的this指向的就是person,所以通过this,方法之间是可以相互调用的。
而本案例中,只是在事件中,调用了一个方法去触发,去通知。发布和订阅都是独立的,并不是相互调用的关系。跟对象中方法相互调用不是一回事,所以不要进行对比哦。
祝学习愉快,望采纳。
好帮手慕夭夭
2019-10-11
你好同学,你理解的不对。show是一个事件,不是方法。trigger是js提供的一个方法,是用来触发指定事件的。show就是trigger的参数,即通过trigger触发这个事件。所以它们肯定不存在互相调用关系哦。
祝学习愉快,望采纳。
相似问题