1 初始化dom元素 ,在页面加载的时候只执行一次,不在被调用
var datamodel = { table : [], tree : {} }; (function(dm){ alert("22222222222"); for(var i = 0; i < dm.table.rows; i++){ var row = dm.table.rows[i]; for(var j = 0; j < row.cells; i++){ // drawCell(i, j); } } //build dm.tree })(datamodel);
2 闭包不释放引用,函数内部的值可以保留
例子:缓存数据,数据存在从缓存中取,不存在则创建放到缓存中
var CachedSearchBox = (function(){ var cache = {}, count = []; return { attachSearchBox : function(dsid){ if(dsid in cache){//如果结果在缓存中 return cache[dsid];//直接返回缓存中的对象 } // var fsb = new uikit.webctrl.SearchBox(dsid);//新建 cache[dsid] = dsid+"测试";//更新缓存 if(count.length > 100){//保正缓存的大小<=100 delete cache[count.shift()]; } return cache[dsid]; }, clearSearchBox : function(dsid){ if(dsid in cache){ cache[dsid].clearSelection(); } } }; })(); var result = CachedSearchBox.attachSearchBox("input22"); alert(result);
3 封装,因为闭包结果又引用,引用中用到了闭包中的变量,使得闭包变量得以长久保存
这个例子实现了对name这个变量的封装,只能依靠方法来访问。
var person = function(){ //变量作用域为函数内部,外部无法访问 var name = "default"; return { getName : function(){ return name; }, setName : function(newName){ name = newName; } } }(); console.log(person.name);//直接访问,结果为undefined console.log(person.getName()); person.setName("abruzzi"); console.log(person.getName());
4 闭包实现面向对象,不同对象有不同的变量与状态
原理:1 中的闭包,是一个匿名函数,只被调用一次, 而 2中的闭包把匿名函数给一个变量引用,使得内部状态可以常驻内存
在4中则闭包创建为一个有名称的函数,每次调用则可以创建单独的闭包变量,则可以创建多个 ,每一个可以看成一个对象 。
function Person(){ var name = "default"; return { getName : function(){ return name; }, setName : function(newName){ name = newName; } } }; var john = Person(); console.log(john.getName()); john.setName("john"); console.log(john.getName()); var jack = Person(); console.log(jack.getName()); jack.setName("jack"); console.log(jack.getName());
相关推荐
JavaScript 闭包是一种强大的编程工具,常常被用来解决特定的问题和优化代码结构。在JavaScript中,闭包是指一个函数能够访问并操作其定义时的作用域内的变量,即使该函数在其外部作用域被调用。以下将详细介绍两个...
### JavaScript闭包的理解 在JavaScript中,闭包(Closure)是一种非常重要的概念,它涉及到函数作用域、变量生命周期以及函数内部对外部作用域的访问等多个方面。本文将基于提供的文件内容,深入探讨JavaScript...
### JavaScript闭包详解 #### 一、闭包概念与特性 **闭包**是JavaScript语言的一个重要特性,它使得函数可以访问并操作其外部作用域内的变量,即使该函数在其外部作用域之外被调用。要理解闭包,首先需要了解...
### JavaScript闭包完整解释 #### 一、闭包的基本概念 **闭包**是一个非常重要的JavaScript概念,它指的是一个函数能够记住并访问其外部作用域中的变量的能力,即使该函数在其外部作用域之外被调用也是如此。具体...
以下是一些关于JavaScript闭包的关键知识点: 1. **函数嵌套**:闭包最常见的形式是内部函数引用了外部函数的变量。例如: ```javascript function outerFunction() { var outerVar = 'I am from the outer ...
在这个“js闭包理解之倒计时”的主题中,我们将深入探讨如何利用闭包实现一个实际项目中的倒计时功能。 首先,让我们了解一下闭包的基本概念。在JavaScript中,每当函数被创建时,它都会形成一个闭包,这个闭包包含...
总之,JavaScript的闭包是一种核心概念,理解和掌握闭包对于深入学习JavaScript以及使用jQuery等库进行前端开发至关重要。通过闭包,开发者可以实现更灵活和高效的设计模式,提高代码质量与可维护性。
本文将介绍 JavaScript 闭包的定义、使用场景和典型应用。 闭包函数的定义和使用场景 在 JavaScript 语言中,闭包函数是指在函数顶层可定义函数,即函数可以嵌套的。简单地说,闭包也就是内层函数可以引用存在于...
Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态...本文将以例子入手来介绍Javascript闭包的语言特性,并结合一点 ECMAScript语言规范来使读者可以更深入的理解闭包。
总之,JavaScript闭包是理解和编写高效、模块化代码的关键概念,它能帮助我们更好地管理作用域、变量和内存,从而提高代码的复用性和可维护性。在日常开发中,熟练掌握闭包不仅可以提升编程技能,也能让代码更加优雅...
闭包是JavaScript中实现数据隐藏和封装的一种重要手段,对于理解和编写高效的JS代码至关重要。 1. **作用域的理解** - **全局变量**:在整个程序中都可访问的变量,它们在整个脚本的生命周期内都存在。 - **局部...
总结来说,“layer.rar”提供的是一种使用JavaScript闭包封装的跨平台提示模态框解决方案,它结合了HTML和CSS的威力,实现了响应式设计,可以在各种设备上提供一致的用户体验。这个工具的使用和实现涉及到了...
闭包是ECMAScript (JavaScript)最强大的特性之一,但用好闭包的前提是必须理解闭包。闭包的创建相对容易,人们甚至会在不经意间创建闭包,但这些无意创建的闭包却存在潜在的危害,尤其是在比较常见的浏览器环境下...
闭包一点即通 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
该控件使用JavaScript闭包原理,编写一个通用的Web图片浏览类,使用CSS控制显示外观,在网页中调用ShowPhotoLib类构造一个图片浏览器的对象,对图片进行控制显示。 4. 实现方法 实现ShowPhotoLib类,需要使用...
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
资源名称:javascript闭包详解 中文word版 内容简介: Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C 的程序员来说是一个新的...
在JavaScript引擎中,垃圾回收机制通常会清理不再使用的对象,但涉及到闭包时,需要特别注意何时可以安全地释放这些资源。 构成闭包的条件通常包括以下几点: 1. 一个内部函数。 2. 内部函数引用了外部函数的变量。...