javascript - js事件机制
阿神
阿神 2017-04-11 12:56:24

求解什么是js事件机制,最好是通俗易懂的介绍一下
事件机制的原理

阿神
阿神

闭关修行中......

reply all(3)
小葫芦

(简单的讲一讲吧

什么是事件

首先用一个人来比喻吧,人都会睡觉,但是只有人感觉到困了才会去睡觉。
用程序的话来讲,人这个对象存在一个睡觉的方法,这个方法只有当精神疲劳这个事件触发的时候才会执行:

function sleep(){
    do sleep
}

man.ontired=function(){
    sleep();
}

当然,有的人因为一堆工作还没完成,即使深夜12点很累还是得加班工作,这时候,人触发了精神疲劳这个事件之后可能会执行一个继续工作的方法(比如我QAQ。。。

man.ontired=function(){
    work()
}
  • 所以事件这种东西是广泛存在于我们周围的,也就是一个触发点,就像一个开关一样,按下了灯就亮了,再按一下灯就灭了,这就是一个事件。

  • 把事件放到web,准确地讲应该是浏览器里面,事件又是什么呢?

  • 答案当然是用户所有对浏览器所做的行为的响应。比如最简单的点击啦、按键盘啦、移动鼠标啦、关闭网页啦、加载网页啦等等,只要浏览器能对用户行为作出响应的,都是web的事件,比如一个用户怒砸电脑,这个浏览器无法监听也无法响应,所以算不上web的事件。

  • 所以,事件是浏览器对用户行为的一个响应

js是事件驱动的

  • 而正是有这些事件的存在,程序员和用户方可以联系起来,程序员不知道用户对网页做了什么,但是程序员知道用户做了那些行为后应该给予怎么样的处理。你可以想象我们前端程序员个个都是地雷兵,在页面布满了大大小小的“事件地雷”,只要用户不踩上去,我们写的代码会老老实实躺在js文件里面永不触发。但一旦用户点击了拖拽了按键了踩了“事件地雷”,那么我们写的代码就像地雷一样“boom”的一声开始执行。就比如:

    document.body.onclick=function(){
        alert('boom')
    }
  • 如果用户只是打开了网页,根本没有点击页面,那么这个"boom"永远不会弹出来。

  • 因为js是事件驱动的。

事件驱动是什么?

  • 上面那几个例子已经很好说明了什么是事件驱动。事件驱动就是,事件没发生,代码不执行,事件是触发代码执行的直接原因。

  • 一般来讲,可能你有遇到,在一个点击事件里面写了一个小小或者大大的逻辑错误,js页面加载的时候并不会给你报错,它只是匆匆看了一眼onclick里面的内容,但不会去执行它,自然不会去发现里面的逻辑错误,除非你里面写了一个语法错误,js看了一眼发现,卧槽这里面的语句不通顺读不通啊,它才会提示错误。只有你点击事件触发的时候,js执行了下代码,然后发现里面的逻辑狗屁不通,然后才会报错。

  • 通常我们都会写个window.onload,页面加载完成触发的事件,把要执行的代码放里面,这样资源加载好了js好操作。但是,页面还存在一个隐性的事件,就是read事件,js引擎阅读代码事件。如果读到了function 函数名(){...}活着var 函数名=function(){...}这样的结构,它会匆匆扫一眼,不执行里面的代码,然后继续读下去,其他的语句一旦遇到了,js就会去执行它。比如var 变量名或着函数名()这样。这个是read事件,其他事件也类似,只有当前浏览器对用户行为的响应时,js才会执行里面的代码。

其他语言的事件驱动

  • 说到事件驱动,还有一个语言也是事件驱动的,那就是php(我所知道的。。。)。

  • php的事件驱动在于,它同样为服务器划分了事件,最简单的,一个请求进来,这是一个事件;服务器做出一个响应,这也是一个事件。然后后台服务器围绕这几个事件,一旦触发哪个就执行相关代码。

  • js的后台版node也是一样的

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!