现代事件模型可以定义多个处理函数的原因

原始事件模型定义事件处理函数时,实际上是给DOM元素添加了一个属性,当你定义多个事件处理函数时,前面的事件处理函数就被后面的覆盖了。

例如:

document.onclick = function(){

console.log(window.event.toElement)

}

实际上是给document对象定义了onclick 属性,可以这样来调用它document.onclick ();

而现代事件模型,是通过调用方法注册时间处理程序,而不是给DOM对象添加属性,因此定义多个事件处理函数,是不会造

成覆盖情况的。

时间: 2024-10-30 06:22:40

现代事件模型可以定义多个处理函数的原因的相关文章

转-C++之虚函数不能定义成内联函数的原因

转自:https://blog.csdn.net/flydreamforever/article/details/61429140 在C++中,inline关键字和virtual关键字分别用来定义c++中的内联函数和虚函数,他们在各自的场合都有其各自的应用,下面将简单介绍他们各自的功能,然后在说明为什么一个函数不能同时是虚函数和内联函数(inline). 一.内联函数(inline)内联函数的目的是为了减少函数调用时间.它是把内联函数的函数体在编译器预处理的时候替换到函数调用处,这样代码运行到这

【repost】JavaScript 事件模型 事件处理机制

什么是事件? 事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水.当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了.事件可能是用户在某些内容上的点击.鼠标经过某个特定元素或按下键盘上的某些按键.事件还可能是 Web 浏览器中发生的事情,比如说某个 Web 页面加载完成,或者是用户滚动窗口或改变窗口大小. 通过使用 JavaScript ,你可以监听特定事件的发生,并规定让某些事件发生以对这些事件做出响应. 今天的事件 在漫长的演变史,我们已经告

关于事件模型的一些看法

http://forkme.info/about-event-loop/ 概述 事件处理模型, 也即是全异步事件处理模型.在以前, 对于那些同时执行多项任务, 但仍能响应用户交互的应用程序通常需要实施一种使用多进程(如linux的fork操作)或者多线程的操作.对于低并发的环境, 这样做无疑能避免进程因等待某个操作而出现"假死"现象.但对于更复杂的异步应用程序或者是要求高并发的环境, 就要使用事件模型来处理异步事件, 这样做有很多好处: 在高并发条件下响应用户时间更快; 内存消耗降低,

java界面编程(4) ------ Swing事件模型

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 在Swing的事件模型中,组件可以发起(触发)一个事件.每种事件的类型由不同的类表示,当事件被触发时,它将被一个或多个"监听器"接收,监听器负责处理事件.所以,事件发生的地方可以与事件处理的地方分离开.既然是以这种方式使用Swing组件,那么就只需要编写组件收到事件时将被调用的代码.所谓事件监听器,就是一个"实现特定类型的监听器接口"类对象. 下面

JavaScript事件模型

一.事件流 事件流意味着页面上不止一个元素可以相应相同的事件.逻辑上,每个元素必须能以指定顺序响应事件.事件顺序是IE4.0和Netscapte4.0中支持的事件之间的主要不同点. 1.事件冒泡 对于IE,解决方案是使用事件冒泡技术.基本思想是,事件从事件发生的目标最内部开始出发,向上触发到最外部(document对象). 如果在IE5.5中点击div元素,事件以如下顺序冒泡: 1)<div/> 2).<body/> 3)document 2.事件捕获 事件捕获与冒泡正好相反,它的

ExtJS框架基础:事件模型及其常用功能

前言 工作中用ExtJS有一段时间了,Ext丰富的UI组件大大的提高了开发B/S应用的效率.虽然近期工作中天天都用到ExtJS,但很少对ExtJS框架原理性的东西进行过深入学习,这两天花了些时间学习了下.我并不推荐大家去研究ExtJS框架的源码,虽然可以学习其中的思想和原理,但太浪费精力了,除非你要自己写框架. 对于ExtJS这种框架,非遇到"杂症"的时候我觉得也没必要去研究其源码和底层的原理,对其一些机制大致有个概念,懂得怎么用就行,这也是本篇博文的主要目的. Ext自己的事件机制

编写高质量代码改善C#程序的157个建议——建议41:实现标准的事件模型

建议41:实现标准的事件模型 上一建议中,我们实现了一个带事件通知的文件传输类FileUploader.虽然已经满足需求,但却不符合C#的编码规范,查看EventHandler的原型声明: public delegate void EventHandler(object sender, EventArgs e); 我们应该知道微软为事件模型定义的几个规范: 委托类型的名称已EventHandler结束: 委托原型返回值为void: 委托原型具有两个参数:sender表示事件触发者,e表示事件参数

JavaScript事件模型及事件代理

事件模型 JavaScript事件使得网页具备互动和交互性,我们应该对其深入了解以便开发工作,在各式各样的浏览器中,JavaScript事件模型主要分为3种:原始事件模型.DOM2事件模型.IE事件模型. 1.原始事件模型(DOM0级) 这是一种被所有浏览器都支持的事件模型,对于原始事件而言,没有事件流,事件一旦发生将马上进行处理,有两种方式可以实现原始事件: (1)在html代码中直接指定属性值:<button id="demo" type="button"

类成员函数作为回调函数/事件模型

在C++中,有需要将类的成员函数作为某一个组件/API的回调函数的需求,应对这种需求,可以使用: 1.C++ 11里面的  std::function  和 std::bind 代替回调函数: class EventArgs { public: EventArgs(){} virtual ~EventArgs(){} }; typedef std::function<void(void* sender, EventArgs* args)> EventHandler;   class Wnd {