转载:http://www.cnblogs.com/lyk831216/archive/2009/03/27/1423058.html
闭包可以用优雅的方式来处理一些棘手的问题,有些程序员声称没有闭包简直就活不下去了。这虽然有些夸张,却从侧面说明闭包有着强大的功能。下面列举了一些闭包应用。
1、通过闭包修正事件注册时的this指针
button1.onclick = (function(owner){
return function(){
button1_click.apply(owner,arguments)
}
})(button1);
2、利用闭包加强模块化
闭包有益于模块化编程,它能以简单的方式开发较小的模块,从而提高开发速度和程序的可复用性。和没有使用闭包的程序相比,使用闭包可将模块划分得更小。比 如我们要计算一个数组中所有数字的和,这只需要循环遍历数组,把遍历到的数字加起来就行了。如果现在要计算所有元素的积呢?要打印所有的元素呢?解决这些 问题都要对数组进行遍历,如果是在不支持闭包的语言中,我们不得不一次又一次重复地写循环语句。而这在支持闭包的语言中是不必要的.
var sum=0;
function each(array,callback){
var i=0,length=array.length;
for(var v=array[0];i<length;i++){
v=array[i];
callback.call(v,i,v);
}
return array;
}
each(n,function(i,o){
sum=sum+o;
});
each(n,function(i,o)){
sum=sum*o;
}
3、抽象,闭包是数据和行为的组合,这使得闭包具有较好抽象能力,下面的代码通过闭包来模拟面向对象编程的单例模式。
MyNamespace.Singleton=(function(){
//private methods
var privateAttribute1=false;
var privateAttribute2=true;
function privateMethod(){
}
return {//public members
publicAttribute1:true,
publicAttribute2:10,
method1:function(){
},
method12:function(){
}
}
})();
分享到:
相关推荐
### JavaScript闭包高级教程 #### 简介 在JavaScript编程中,“闭包”是一个非常重要的概念,尤其对于希望深入理解和高效使用JavaScript的开发者来说。简单地说,闭包是一种能够记住并访问其创建时周围环境的函数...
这个"JavaScript技巧收集.7z"压缩包很可能是包含了一系列关于JavaScript编程的实用技巧、代码片段或者示例项目。尽管没有具体的标签提供额外信息,我们可以从常见的JavaScript知识点出发,来探讨一些重要的概念和...
JavaScript 中的内存泄露模式_filesJavaScript高级应用(一) - 静 - CSDNBlog_files javascript函数作用域与闭包 - dh20156's New World!_filesjavascript如何避免内存泄露 - - JavaEye技术网站_filesprototype_js...
Chrome V8 JavaScript 引擎是谷歌开发的一款高性能的JavaScript引擎,它被广泛应用于Google Chrome浏览器以及其他基于Chromium的浏览器中。在2011年12月01日发布的版本3.7.12,V8引擎展示了其在速度、内存管理和对...
JavaScript是Web开发中不可或缺的一部分,尤其对于前端开发者来说,深入理解和掌握JavaScript的高级特性至关重要。这份"JavaScript高级 JavaScript编程-中高级提升(中高级版)"资料正为此目的而准备,旨在帮助有4年...
JavaScript是Web开发中不可或缺的一部分,尤其在前端领域。在面试中,JavaScript技术问题和概念的掌握程度往往是评估候选人技能的关键。以下是一些重要的JavaScript知识点,这些知识点经常在面试中出现,并且与描述...
内存泄漏在Web应用中可能不那么常见,因为JavaScript引擎(如V8)有自动垃圾收集机制。但是,由于异步操作、闭包、事件监听器等复杂性,开发者仍然可能会无意间创建内存泄漏。压缩包内的"async-subject-experiment....
尽管在现代开发中,JScript的使用已经不如JavaScript普遍,但了解其历史和与JavaScript的关系对于深入理解JavaScript的演变是有益的。 "doc javascript, 入门"的标签进一步强调了这是针对JavaScript初学者的内容。...
JavaScript闭包是编程中一种重要的概念,它涉及到函数和作用域的高级特性。闭包的主要特点在于它能够访问并操作其定义时所在的作用域内的变量,即使在其外部被调用时也是如此。这使得闭包在JavaScript中具有多种用途...
在JavaScript中,面向对象编程(Object-Oriented Programming, OOP)是一种常见的编程范式,但与传统的C++或Java有所不同。JavaScript并没有采用类(Class)的概念,而是基于原型(Prototype)来实现对象的继承和...
JavaScript是一种广泛应用于网页和网络应用的脚本语言,它的强大在于能够动态地更新和操作网页内容,赋予网页交互性。这个“JavaScript经典代码收集”压缩包显然包含了各种实用且经典的JavaScript代码片段,对于学习...
通过以上知识点的学习,你可以快速掌握JavaScript的基础知识,并能够应用于实际项目开发中。JavaScript作为现代Web开发的核心技术之一,其重要性不言而喻。随着技术的发展,JavaScript也在不断地进化和完善,学习者...
在这个"JavaScript常用函数数、常用正则表达式收集___下载.zip"压缩包中,我们可以预见到一系列与JavaScript相关的实用工具函数和常用的正则表达式模式。 首先,让我们来探讨JavaScript中的常用函数。在JavaScript...
在"javascript-code-list-master"中,开发者可以找到上述各领域的实例和最佳实践,帮助他们快速理解和应用JavaScript技术。这些代码片段和库不仅适用于初学者,也为经验丰富的开发者提供了宝贵的参考资料。
此外,JavaScript还支持闭包,即函数可以访问在其外部作用域中声明的变量。例如: ```javascript function outerFunction() { let outerVariable = "外部变量"; function innerFunction() { console.log...
- **对象与类**:介绍面向对象编程在 JavaScript 中的应用,包括类的定义、继承等。 - **DOM 操作**:探讨如何使用 JavaScript 操纵网页文档对象模型(DOM),实现动态页面效果。 - **事件处理**:解释事件监听器...
标签中的"javascript"显然表明内容与JavaScript语言相关,"awesome-list"表示这是一个精选的资源列表,"newbies"意味着它特别适合JavaScript新手,而"hashnode"可能是引用了Hashnode社区,一个开发者分享知识的平台...
1. **ClojureScript**:一种静态类型的函数式编程语言,设计用于生成JavaScript代码,可以在浏览器和Node.js环境中运行。学习ClojureScript意味着要理解其语法、宏系统、闭包和异步编程模型。 2. **JavaScript...
闭包是JavaScript中的一个重要特性,它允许函数访问并操作外部函数的变量,即使外部函数已经执行完毕。闭包常用于创建私有变量,实现数据封装。 7. 剩余参数与解构赋值 ES6引入了剩余参数(...rest)和解构赋值,...
6. **闭包**:闭包是JavaScript中的一个高级特性,它允许函数访问并操作外部作用域的变量,即使在外部函数已经执行完毕后。 7. **ES6及新特性**:ECMAScript 6(简称ES6)引入了许多新的特性和语法糖,如let和const...