闭包是JS中重点难点,自己看了N多文章和实例,检测一下!
下面这个ul,如何点击每一列的时候alert其index? <ul id=”test”> <li>这是第一条</li><li>这是第二条</li><li>这是第三条< /li> </ul>
按照常规的思路,我们会像下面这样子写;那么运行的结果是什么呢?0、1、2、3 它只是把for循环跑了一遍,关键点来了,我们如何获取每个li的index属性?oTestList是一个数组,但很遗憾的是,通过getElementsByTagName取得的数组是没有index属性的,所以没法直接获取点击时的Index,那么我们只有自己写个方法了!
看看我们自己写的方法吧!正是采用了闭包的相关原理,我这里采取了两种写法,但本质是一样的
//第一种写法,两者的本质都是一样的,这种写法更容易理解 function getIndex(){ var oTestList = document.getElementById("test").getElementsByTagName("li"); for (var i = 0; i < oTestList.length; i++) { oTestList[i].onclick = new popNum(i); } } function popNum(oNum){ return function(){ alert('您单击的是第'+oNum+'项'); } } window.onload = function(){ getIndex(); }
//第二种写法,这种写法更能体现闭包的实质 window.onload=function(){ var oTestList = document.getElementById("test").getElementsByTagName("li"); for (var i = 0; i < oTestList.length; i++){ function listFunc(i){ this.clickFun = function(){ alert("列表项" + i); } } var newFunc = new listFunc(i);//此处必须新建 oTestList[i].onclick = newFunc.clickFun; } }
如果大家还有什么比较典型的例子,就贴上来一起讨论一下吧!
发表评论
-
测试代码高亮
2012-10-22 15:28 0HTML <h3 class="sh_a ... -
href="javascript:scroll(0,500)"
2012-08-28 10:44 454<a href="javascript:scr ... -
网站与博文收藏
2011-09-09 19:44 852看见好的文章总是忍不住收藏一下! http://w3h ... -
FF下面实现outerHTML
2011-07-20 22:06 817http://w3help.org/zh-cn/causes/ ... -
如何实现图片预加载
2011-07-19 10:29 679function loadImage(url, callbac ... -
数组排序专题(二)------快速排序(大量数据)
2011-07-14 14:14 1147看了阮一峰介绍的快速排序方法,觉得受益匪浅 下面是他的链接h ... -
javascript常见扩展方法
2011-07-08 14:44 9171.去掉数组中重复的值 Array.protot ... -
数组排序专题(一)---冒泡排序
2011-06-14 14:44 908最基本的题目:一个数组,未知长度,按从小到大的顺序进行排列;现 ... -
删除数组中重复的元素
2011-06-07 11:02 775//删除数组中重复的元素 var numArr=[6, ... -
javascript中style后面的属性与CSS中的属性区别
2011-05-06 14:36 766在javascript中style后面的属性与 ... -
解淘宝面试题
2011-05-04 16:53 925从网上搜出了淘宝的面试题,做了一下,把代码贴出来,一起讨论下! ... -
获取div、网页、屏幕、浏览器的宽高
2011-05-03 17:37 0test -
type属性是否可以动态修改?
2011-04-23 10:34 611在IE中,type为只读,无法动态修改,除非是通过create ... -
某公司js试题(转来的)
2010-11-26 15:31 1161首先多谢BlueCat,这是从他那转过来的; 1、笔试 ... -
前端开发工程师面试题(转来的)
2010-10-08 16:09 741前端工程师面试题!!! ...
相关推荐
Python闭包实例closure.py 简单示例闭包的使用 简单示例闭包的使用
javascript 闭包实例下载
用实例展示闭包的用法,其中包含一些动画效果
三元闭包现象的数据验证,1.整个实验以矩阵为操作对象,邻接矩阵还是很有作用的,也便于理解 2.R语言中有network数据结构,有IGraph包,计算聚集系数与介数都有已封装得函数。
本文是通过实例来帮助大家深刻理解js闭包,是篇非常不错的文章,这里推荐给大家,有需要的小伙伴可以参考下
本文实例分析了PHP程序设计中闭包的概念机用法,分享给大家供大家参考。具体分析如下: 通常来说,闭包也就是PHP的匿名函数, 但是和函数不同的是,闭包可以通过use使用函数声明时所在作用域的变量的值。 具体形式...
什么是闭包 闭包是什么?闭包是Closure,这是静态语言所不具有的一个新特性。但是闭包也不是什么复杂到不可理解的东西,简而言之,闭包就是: 闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。...
NULL 博文链接:https://czj4451.iteye.com/blog/1988315
一、充电 1、一切(引用类型)都是对象,对象是属性的集合。 2、函数是一种对象,但是函数却不像数组一样——你可以说数组是对象的一种,因为数组就像是对象的一个子集一样。但是函数与对象之间,却不仅仅是一种包含...
一般来说闭包这个概念在很多语言中都有涉及,本文主要谈谈python中的闭包定义及相关用法。Python中使用闭包主要是在进行函数式开发时使用。详情分析如下: 一、定义 python中的闭包从表现形式上定义(解释)为:如果...
官方解释 “闭包”是一个拥有许多变量和绑定了这些变量的环境表达式(通常是一个函数),因而这些变量也是环境表达式的一部分。 通俗解释 Javascript中所有的函数都是一个闭包。不过一般来说,嵌套的function产生的...
准确来说,闭包是基于正常的垃圾回收处理机制下的。也就是说,一般情况一个函数(函数作用域)执行完毕,里面声明的变量会全部释放,被垃圾回收器回收。但闭包利用一个技巧,让作用域里面的变量,在函数执行完之后...
下面是一个简单的使用全局变量的闭包实例: 代码如下: var sWord=”Hello,Welcome to web前端开发工程师的博客,请多多指教。” function disWord(){ alert(sWord); } disWord(); 解析:脚本载入到内存的...
主要介绍了python中的闭包用法,以实例形式详细分析了Python中闭包的概念及相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下