首页 > 如何形象的解释JS中事件这两个字

如何形象的解释JS中事件这两个字

在JS高级程序设计里,解释是:事件就是文档浏览器窗口中发生的一些特定的交互瞬间。感觉这对新手来说,书上的解释还是不能很好理解,还是不是很具体。一说事件大家知道点击事件,鼠标事件等等,但是我查了资料还是不能像同学解释清楚什么是事件?


事件应该就是用户主动的行为 必须要有某些东西改变


我觉得已经够通俗了,如果再通俗点:

事件就是你在浏览器上浏览网页时做出的“行为”,可以把任何操作都看作行为(点击,滑动等等),毕竟你不可能坐在电脑前一动不动吧!


事件就是消息,就是广播~~~
消息有特定目标的消息和无具体目标的消息
消息发送出去了,可以有人响应,也可能没人理睬
想要收到消息,那么就需要订阅,就需要addEventListener


举个例子,如果你的大脑是浏览器,由于常年的加班让你觉得有必要提醒下老板加工资(产生需求)。当老板(对象)穿着阿迪达斯人字拖(属性)吃着火锅唱着歌(方法)走进办公室(条件判断,亦可理解为监听老板进来这一事件),你一把抄起海盗船钛金机械键盘给了他一耳光,把他人字拖扔了(监听器为true时所执行的动作,此例为操作对象)


JS 里的事件基本分类

  1. 元素事件-HTMLEvents [change,click,...]

  2. 鼠标事件-MouseEvents [mousemove,mousedown,mouseup,mouseover]

  3. 键盘事件-KeyboardEvents [keydown, keypress, keyup]

一个典型的事件绑定及解绑函数

function bind(elem, event, func, bool) {
    bool = bool || false;
  if (elem.addEventListener)
    elem.addEventListener(event, func, bool);
  else if (elem.attachEvent)
    elem.attachEvent('on' + event, func);
}

function unbind(elem, event, func, bool) {
  bool = bool || false;
  if (elem.removeEventListener)
    elem.removeEventListener(event, func, bool);
  else if (elem.detachEvent)
    elem.detachEvent('on' + event, func);
}

事件模型, IE和其他浏览器采用了不同的方案来处理,一个是从上往下,另一个是从事件发生的元素向上传递通知事件。

一般的事件处理模型

  1. 选择DOM树中的元素,监听事件,用户触发事件,调用事件的回调函数处理事件。

  2. 创建自定义的事件,当对象发生改变时,触发事件,通知已注册的回调函数。


不如解释成动作吧,指定的动作对应指定的处理函数,叫事件也没什么不好理解的吧,难道会和那种订阅/发布的事件混淆?其实也差不多啊,绑定处理函数相当于(subscribe),各种交互触发相当发布(dispatch)。


事件就是消息。进一步说,就是提前约定好的具有特定格式和含义的消息。

当你收到一条消息时,意味着你需要去某件事情来响应这条消息了。

举例:智能手机的闹钟功能

你设定一个闹钟用来提醒你起床,又设定一个闹钟提醒你吃午饭,又设定一个闹钟提醒你去跑步。

当闹钟响起时,就意味着你收到一条消息(或者说发生了一个事件)。根据消息(事件)的具体内容,比如name='跑步',你就可以知道你需要做什么了。你要做的事情就是对这个事件的响应。


事件,被动执行的函数。


事件就是些约定好的动作


通俗点讲,举例:你推开了一个人,拿了一杯奶茶喝。这个“拿”与“推”,就是事件。


just only do something.


既然说到形象,那我就把我们浏览的页面比喻成见一个朋友吧。
朋友一见到你,向你打招呼。
在这个过程中,见到你对这个朋友来说就是一个事件,这个事件包含了你这个人的信息,见到你的时间地点等等;向你打招呼就是见到你这个事件的回调函数结果啦,他根据事件中你的个人信息和其他信息,决定是否要和你打招呼,怎么跟你打招呼,是不是要吓你一跳等等。--> 相当于body的onload事件
朋友和你打招呼之后,你们开始聊天。你问他:“最近过得怎么样?”,他说:“还可以。”
在这里,你问他对这个朋友来说,是一个事件;“最近过得怎么样?”这个信息包含在事件中;朋友回答你的问题是这个事件的回调函数结果,基于事件的信息,他回答了“还可以”。

再举个现在的例子:
我看到题主这道题,写下参考答案。题主看后无感。
看到题主这道题对我来说是事件,写下参考答案是我对这个事件的回调函数结果,题主看到这个答案对题主是事件,无感是题主对此事件的回调函数结果。在题主写下这个问题后,每多一人看到此题,就触发了此人看到此题事件和浏览数+1事件,看到的人有些默默走过,是回调函数的运行结果之一;有些动笔写下答案,是另一种回调函数的运行结果。不同的人看到,触发了同一个事件,但每个人的回调函数不同,所以产生了不同的结果。
从这里就可以看到从题主提问,到题主得到回答,整个过程都有事件贯穿其中,有些不可见,有些可见,充当着我们交流的媒介。

【热门文章】
【热门文章】