`

闭包实例

 
阅读更多

闭包是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;
}
}
 

如果大家还有什么比较典型的例子,就贴上来一起讨论一下吧!

分享到:
评论

相关推荐

    javascript 闭包实例下载

    首先,我们来看一个简单的闭包实例。假设我们有一个外部函数`outerFunction`,它内部定义了一个返回的内部函数`innerFunction`: ```javascript function outerFunction() { var outerVar = 'I am from outer ...

    Python闭包实例closure.py

    Python闭包实例closure.py 简单示例闭包的使用 简单示例闭包的使用

    【仅适合初学者】js闭包实例

    - 常见的一个闭包实例是计数器,例如: ```javascript function createCounter() { let count = 0; return function() { count++; console.log(count); }; } const counter = createCounter(); counter()...

    Javascript闭包实例详解

    JavaScript中的闭包是一种重要的编程概念,它涉及到函数、作用域和变量持久化。闭包本质上是函数能够记住并访问其词法作用域内的变量,即使该函数已经执行完毕且其外部作用域不再存在。这种特性使得闭包成为...

    js闭包实例汇总

    JavaScript中的闭包是一种高级特性,它允许函数访问和操作其自身范围内的变量,即使在其外部定义的函数已经执行完毕。这种特性使得闭包在管理作用域、数据隐藏和内存持久化方面具有重要作用。 首先,我们要了解函数...

    PHP闭包实例解析

    3. **返回闭包**:闭包可以作为函数的返回值,这使得我们可以创建“工厂”函数来生成不同的闭包实例。 ```php function createCounter() { $count = 0; return function() use (&$count) { return ++$count; ...

    数据科学三元闭包验证

    数据科学三元闭包验证是数据挖掘和网络分析中的一个重要概念,主要研究的是在社会网络或图论中,三个人之间的关系强度如何影响彼此之间的连接。三元闭包是指如果个体A与B有联系,B与C有联系,通常情况下,A与C之间也...

    javascript 闭包实例

    在描述中提到的博客链接中,可能包含了闭包的实例和深入解析。通常,闭包的常见应用场景包括: 1. **数据封装**:通过闭包,可以在函数内部创建私有变量,防止外部直接访问和修改,保证数据的安全性。例如: ```...

    JavaScript闭包实例详解

    例如,`Function`构造函数创建的函数实例(如`Fn`)有`prototype`属性,这是一个对象,通常包含了构造函数的`constructor`属性,指向该构造函数自身。另一方面,每个对象都有`__proto__`属性,它指向创建该对象的...

    浅析javascript闭包 实例分析

    闭包是JavaScript中的一个重要概念,它是指有权访问另一个函数作用域中的变量的函数。在JavaScript编程中,闭包的应用非常广泛,它不仅可以帮助我们创建私有变量,还能为模块化编程提供强大的支持。 在闭包的定义中...

    JavaScript闭包实例讲解

    通常,我们会为类的实例提供一个`getStatus`方法来获取私有属性`status`。但如果`status`是公共属性,这样做似乎显得多余。然而,通过闭包,我们可以创建一个立即执行的函数表达式(IIFE),它返回一个包含`get...

    js中的闭包实例展示

    下面是一些闭包的经典实例: 1. 在`car`函数中,`fn`能够访问并修改外部的`speed`变量,即使`car`执行完毕,`speed`仍然被`speedUp`所引用,形成闭包。如果去掉`return fn`,`speed`将无法被保留,因为没有引用指向...

    Python中的闭包实例详解

    一般来说闭包这个概念在很多语言中都有涉及,本文主要谈谈python中的闭包定义及相关用法。Python中使用闭包主要是在进行函数式开发时使用。详情分析如下: 一、定义 python中的闭包从表现形式上定义(解释)为:如果...

    python中的闭包用法实例详解

    首先,让我们通过实例来理解闭包。例1中,`make_adder`函数接收一个参数`addend`,并定义了一个内部函数`adder`,`adder`函数内部引用了`addend`。当`make_adder`被调用并返回`adder`时,`addend`的值被保存在闭包中...

Global site tag (gtag.js) - Google Analytics