永发信息网

事件委托是什么

答案:1  悬赏:60  手机版
解决时间 2021-03-20 22:36
  • 提问者网友:欺烟
  • 2021-03-20 17:44
事件委托是什么
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-03-20 17:51
问题一:什么是事件和委托? 你的问题有些模糊啊,我不知道是问事件还是问委托?问题二:在javascript中什么是事件委托 原理是什么 要了解委托的原理,首先要理解DOM事件的过程。
Dom事件分为两个阶段,如图:
事件捕获阶段(红色箭头顺序)
事件冒泡阶段(绿色箭头顺序)
在事件捕获阶段,事件源依次从defaultView(可以理解为整个页面)一直传播到具体的目标(target)。从广泛到具体。
在事件冒泡阶段,事件源依次从target传播到defaultview。从具体到广泛,范围越来越大,像冒泡过程一样,气泡越来越大(范围越来越大)
而事件委托就是利用的DOM事件的事件捕获阶段。把具体dom上发生的事件,委托给更大范围的dom去处理。好比送信员,如果每次都把信件送给每一户,非常繁琐。但是如果交给一个大范围的管理者,比如小区的传达室,那么事情会变得非常简单。事件委托就类似这种原理,我页面中有很多按钮,如果不使用事件委托,我只能在每个按钮上注册事件。非常麻烦。但如果我把事件注册在一个大范围的div(假设所有的按钮都在这个div中),那么我只要注册一次事件,就可以处理所有按钮(只要按钮包含在上述div中)事件的响应了。问题三:javascript什么时候使用事件委托 通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。
也就是:利用冒泡的原理,把事件加到父级上,触发执行效果。
好处呢:1,提高性能。
我们可以看一个例子:需要触发每个li来改变他们的背景颜色。aaaaaaaa
bbbbbbbb
ccccccccwindow.onload = function(){
var oUl = document.getElementById(ul);
var aLi = oUl.getElementsByTagName(li);
for(var i=0; i>问题四:委托与事件是什么关系?为什么要使用委托? 委托(C# 编程指南)
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示:
C#
public delegate int PerformCalculation(int x, int y);
与委托的签名(由返回类型和参数组成)匹配的任何方法都可以分配给该委托。这样就可以通过编程方式来更改方法调用,还可以向现有类中插入新代码。只要知道委托的签名,便可以分配自己的委托方法。
将方法作为参数进行引用的能力使委托成为定义回调方法的理想选择。例如,可以向排序算法传递对比较两个对象的方法的引用。分离比较代码使得可以采用更通用的方式编写算法。
委托概述
委托具有以下特点:
委托类似于 C++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
如何使用委托,请看
(VS.80).aspx
事件(C# 编程指南)
在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。
在典型的 C# Windows 窗体或 Web 应用程序中,可订阅由控件(如按钮和列表框)引发的事件。可使用 Visual C# 集成开发环境 (IDE) 来浏览控件发布的事件,选择要处理的事件。IDE 会自动添加空事件处理程序方法和订阅事件的代码。有关更多信息,请参见如何:订阅和取消订阅事件(C# 编程指南)。
事件概述
事件具有以下特点:
发行者确定何时引发事件,订户确定执行何种操作来响应该事件。
一个事件可以有多个订户。一个订户可处理来自多个发行者的多个事件。
没有订户的事件永远不会被调用。
事件通常用于通知用户操作(如:图形用户界面中的按钮单击或菜单选择操作)。
如果一个事件有多个订户,当引发该事件时,会同步调用多个事件处理程序。要异步调用事件,请参见使用异步方式调用同步方法。
可以利用事件同步线程。
在 .NET Framework 类库中,事件是基于 EventHandler 委托和 EventArgs 基类的。
关于如何使用事件相关的知识,请看
(VS.80).aspx
这个可以看出他和委托的联系
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela问题五:C#中的委托事件什么意思 这个是n多面试笔试里面爱出的一道题,老生常谈。。。
我讨厌复制粘贴,直接告诉你我的理解,希望对你有帮助---
委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针。
给你举个例子:
//声明一个委托,这里的NewDelegate()可以理解为是之后用来取方法的一个类型。
delegate void NewDelegate();
//下面定义的a,b两种方法,你可以理解为NewDelegate这个类型的两个实例。
public void a(){};
public void b(){};
public void main()
{
NewDelegate dgt1=new NewDelegate(a);
NewDelegate dgt2=new NewDelegate(b);
//dgt1指向方法a,dgt2指向方法b。也就是说一个方法的返回值和参数类型数量与声明的委托
//相符时,就可以用一个委托来调用这个方法。而这个方法的名称作为参数传递给实例化的那个委托
}
事件是一种特殊的委托,为什么这么说呢?
用反编译工具反编译.net framework即可发现,事件的定义(这里只是举其中一种事件的定义,事件的参数在类库中定义有区别),如下:
public delegate void EventHandler(object sender, EventArgs e);
而常见的各种控件的Click事件是如何定义的呢?
public event EventHandler Click;
说明 Click事件是一个委托
而我们常见的一个Button控件添加一个事件是怎么做的呢?
PageLoad里:Button1.Click+=new EventHandler(Button1_Click);
定义Button1的事件 protected Button1_Click(object sender,EventArgs e){}
如你所见,这是一个很典型的委托调用。问题六:.C#中的委托是什么?事件是不是一种委托? 这个是n多面试笔试里面爱出的一道题,老生常谈。。。
我讨厌复制粘贴,直接告诉你我的理解,希望对你有帮助---
委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针。
给你举个例子:
//声明一个委托,这里的NewDelegate()可以理解为是之后用来取方法的一个类型。
delegate void NewDelegate();
//下面定义的a,b两种方法,你可以理解为NewDelegate这个类型的两个实例。
public void a(){};
public void b(){};
public void main()
{
NewDelegate dgt1=new NewDelegate(a);
NewDelegate dgt2=new NewDelegate(b);
//dgt1指向方法a,dgt2指向方法b。也就是说一个方法的返回值和参数类型数量与声明的委托
//相符时,就可以用一个委托来调用这个方法。而这个方法的名称作为参数传递给实例化的那个委托
}
事件是一种特殊的委托,为什么这么说呢?
用反编译工具反编译.net framework即可发现,事件的定义(这里只是举其中一种事件的定义,事件的参数在类库激定义有区别),如下:
public delegate void EventHandler(object sender, EventArgs e);
而常见的各种控件的Click事件是如何定义的呢?
public event EventHandler Click;
说明 Click事件是一个委托
而我们常见的一个Button控件添加一个事件是怎么做的呢?
PageLoad里:Button1.Click+=new EventHandler(Button1_Click);
定义Button1的事件 protected Button1_Click(object sender,EventArgs e){}
如你所见,这是一个很典型的委托调用。问题七:.C#中的委托是什么?事件是不是一种委托? 这个是n多面试笔试里面爱出的一道题,老生常谈。。。 我讨厌复制粘贴,直接告诉你我的理解,希望对你有帮助--- 委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针。 给你举个例子: //声明一个委托,这里的NewDelegate()可以理解为是之后用来取方法的一个类型。 delegate void NewDelegate(); //下面定义的a,b两种方法,你可以理解为NewDelegate这个类型的两个实例。 public void a(){}; public void b(){}; public void main() { NewDelegate dgt1=new NewDelegate(a); NewDelegate dgt2=new NewDelegate(b); //dgt1指向方法a,dgt2指向方法b。也就是说一个方法的返回值和参数类型数量与声明的委托 //相符时,就可以用一个委托来调用这个方法。而这个方法的名称作为参数传递给实例化的那个委托 } 事件是一种特殊的委托,为什么这么说呢? 用反编译工具反编译.net framework即可发现,事件的定义(这里只是举其中一种事件的定义,事件的参数在类库中定义有区别),如下: public delegate void EventHandler(object sender, EventArgs e); 而常见的各种控件的Click事件是如何定义的呢? public event EventHandler Click; 说明 Click事件是一个委托 而我们常见的一个Button控件添加一个事件是怎么做的呢? PageLoad里:Button1.Click+=new EventHandler(Button1_Click); 定义Button1的事件 protected Button1_Click(object sender,EventArgs e){} 如你所见,这是一个很典型的委托调用。问题八:使用事件+委托和直接用方法有什么区别 一楼正解、我一个事件放在那边,触发这个事件后,有注册本事件的客户代码才做对应处理,没有的话就不需要。这样对于客户代码来说,需要这个事件,我就注册一下,不需要我就解除。就这么简单。LZ你现在碰到的情况大概是客户代码很少,可能只有一个需要注册事件,所以你觉得没必要用事件。但是如果客户代码多了的话。事件就很有用了。
举个例子,假设当狗叫的时候,王大妈就要去看看菜有没有被偷了,那么本例中,“狗叫”就相当于事件,“王大妈”就是客户代码。“看看菜是否被偷”就是事件处理回调(callback)、那楼主你是不是认为,当狗叫的时候,直接调用 【王大妈.看看菜被偷了没();】就可以了?因为这边只有王大妈需要知道“狗有没有叫”这条信息,没有其他人需要知道了,但如果有很多人需要在狗叫的时候做对应的事情,你就必须在“狗叫”的时候写上一堆堆的客户调用代码了。【一大爷.看看鸡被偷了没();】【二大爷.看看饭煮好了没();】... 一堆堆。这样,就变成了狗叫到时候,这些人必须做这些事情了。反之,如果王大妈,一大爷,二大爷都只是注册“狗叫”这个事件的话,那么他们可以随时解除事件关联,也就是说,狗照样叫,但这些大妈大爷们是否需要做他们的事情,是他们自己决定的。。。。。哎,就是这么个说明。不知道你看不看得懂啊。。坑爹了。。。问题九:怎么理解js中的事件委托 $(ul).on(click,li,function(){ $(this).css(background-color,red);})问题十:什么是委托?委托和事件是什么关系? 简单的说:委托是一种方法容器,里面可以装载若干个具有相同签名的方法引用地址,那么调用委托,就相当于同时调用了该容器内的所有方法。 委托可以将方法作为参数传递给方法.事件是一种特殊的委托
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯