在Javascript世界里,无所不用闭包及自定义事件, 自定义事件其实也是事先定义好一种规则

,当触发者被响应后执行的一段回调。下面看个例子

function dothing(callBack){
callBack();
}
dothing(function(){
alert(1)
});

上面例子先执行dothing,然后执行里面的闭包(回调)过程,把function(){  alert(1)}做为

参数传递过callBack,后callBack,就callBack(),其它就是执行子被传递的代码 这里用到了匿名函数,在JS中有时候也会用户这样(function(){alert(1)})(),这样后匿名函数

会立马执行,再来说下自定义事件 步骤: 1)创建事件 var event = document.createEvent(type);

type: 可以是DOM Level 2中的 HTMLEvents 也可以是 DOM Level 3中的 MouseEvent 可参考

2) 初始化事件 event.initEvent(type, bubbles, cancelable);

type: 自定义事件的名称 bubbles: 是否冒泡 cancelable: 是否可取消

3) 侦听事件 target.addEventListener(type, listener, useCapture);

type:初始化时注册的事件名称 listener:一般为事件触发的所要执行的function useCapture指出事件在冒泡还是捕获阶段执行 可参考

4) 派发事件 bool = element.dispatchEvent(event);

手动派发此事件,即可触发3中的listener 函数

一个完整的例子:

var evt = document.createEvent('Event');
evt.initEvent('build', true, true);
elem.dispatchEvent(evt);
document.addEventListener('build', function(e){
}, false);

在C#的世界里也完全可以像上面那样,思想是一样的,只是实现的过程不一样罢了

private void  dothing(Action<bool> Hand)
{ //dothing here }
private void go()
{ dothing((e)=>{ //闭包如返回在这里进行操作
});
}

在 事件中的使用

1)先定义事件      public event Action Finished;//注意这里用的是Action类型,简化开发      然后在调用的地方      Finished();      最后执行事件的主体

完整代码

 class Program
{
static void Main(string[] args)
{
t my = new t();
my.Finished += my_Finished;
//当条件成熟时,t类里触发do方法
//这样就会执行到Finished事件了 } static void my_Finished()
{
Console.WriteLine("这事件被调用了");
}
}
class t
{
public event Action Finished;
void Do()
{
Finished();
}
public t()
{
if (DateTime.Now.Year == )
{
Do();
}
}
}

JS和C# 里的闭包及闭包在事件中的使用的更多相关文章

  1. js学习笔记之作用域链和闭包

    在学习闭包之前我们很有必要先了解什么是作用域链 一.作用域链 作用域链是保证对执行环境有权访问的所有变量和函数的有序访问. 这句话其实还是蛮抽象的,但是通过下面一个例子,我们就能清楚的了解到作用域链了 ...

  2. 深入理解JavaScript的闭包特性如何给循环中的对象添加事件

    初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件.在事件响应函数中(event handler)获取对应的索引.但每次获取的都是最后一次循环的索引.原因是初学者并未理解JavaScript ...

  3. [JavaScript闭包]Javascript闭包的判别,作用和示例

    闭包是JavaScript最重要的特性之一,也是全栈/前端/JS面试的考点. 那闭包究竟该如何理解呢? 如果不爱看文字,喜欢看视频.那本文配套讲解视频已发送到B站上供大家参考学习. 如果觉得有所收获, ...

  4. 全面理解Javascript闭包和闭包的几种写法及用途

    好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途.  一.什么 ...

  5. Swift的闭包(一):闭包简介、闭包表达式的优化

    定义:Closures are self-contained blocks of functionality that can be passed around and used in your co ...

  6. 转 全面理解Javascript闭包和闭包的几种写法及用途

    转自:http://www.cnblogs.com/yunfeifei/p/4019504.html 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说ja ...

  7. 全面理解Javascript闭包和闭包的几种写法及用途【转】

    一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  8. js模仿jquery里的几个方法parent, parentUntil, children

    有时工作需要, 也是接着上一章的方法, 用js模仿jquery里的几个方法parent, parentUntil, children. function parent(node){ return no ...

  9. c#调用js,以及js调用C#里的函数, c#自己生成js代码,实现对web的控制

    using mshtml;using System;using System.Collections.Generic;using System.Linq;using System.Security.P ...

随机推荐

  1. jsoup爬虫简书首页数据做个小Demo

    代码地址如下:http://www.demodashi.com/demo/11643.html 昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固, ...

  2. C-C Primer Plus阅读笔记

    常用头: stdio.h string.h inttypes.h limits.h float.h 1.打印short.long.long long和unsigned #include <std ...

  3. Docker的Jenkins Pipeline工作流

    原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模 ...

  4. rac_安装软件时报版本号过高问题

    原创作品,出自 "深蓝的blog" 博客.欢迎转载,转载时请务必注明下面出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlo ...

  5. 自己动手开发更好用的markdown编辑器-04(实时预览)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/25/hexomd-04/   程序打包   文章目录 1. 打开新窗口 ...

  6. 自己动手制作更好用的markdown编辑器-03

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/24/hexomd-03/ 文章目录 1. 系统模块 2. 记录上次打开的 ...

  7. IE6下css常见bug处理

    1.双倍边距 如下图所示,一个样式里面既设定了“float:left:”又有“margin-left:100px:”的情况,就呈现了双倍情况.如外边距设置为100px, 而左侧则呈现出200px,解决 ...

  8. SQL——使用游标进行遍历

    前两天一个同事大叔问了这样一个问题,他要对表做个类似foreach的效果,问我怎么搞.我想了想,就拿游标回答他,当时事实上也没用过数据库中的游标,可是曾经用过ADO里面的,感觉应该几乎相同. 今天闲下 ...

  9. Nginx https加密以及nginx日志配置与管理

    Nginx https加密以及nginx日志配置与管理 使用Nginx的优点Nginx作为WEB服务器,Nginx处理静态文件.索引文件.自动索引的效率非常高.Nginx作为代理服务器,Nginx可以 ...

  10. linq基础,正则表达式,.net相关

    声明扩展方法的步骤:类必须是static,方法是static,第一个参数是被扩展的对象,前面标注this.使用扩展方法的时候必须保证扩展方法类已经在当前代码中using.  LINQ:将int数组中大 ...