闭包最常用的三种用法

闭包的三种经典用法:

1. 通过在函数中创建函数,并返回来延迟作用域链的存在时间(掌握执行环境/作用域链/this/活动对象/arguments/全局对象概念的理解)

2. 模仿块级作用域 (javascript不存在块级作用域)

for(var i=0;i<10;i++){

alert(i);

}

alert(i);  //10

function outputNumbers(count){

(function(){

for(var i=0;i<count;i++){

}

})();

alert(i);   // 找不到该变量  //匿名函数自执行后吗,变量占的内存空间全部释放

}

3. 创建私有变量

可以使用构造函数或原型模式来创建私有变量:

function person(name){

this.getname = function(){

return name;

};

this.setname = function(value){

name = value;

};

}

var person1 = new person(‘pingzidong’);

person1.setname(‘mm’);

alert(person1.getname())

评价:不同的实例都需要创建特权方法,考虑使用原型模式创建私有变量

(function(){

var name = ‘’;

Person =function(val){ //Person全局函数

name = val;

};

Person.prototype.getname = function(){

return name;

};

Person.prototype.setname =function(val){

name = val;

}

})();

var person = new Person(‘pingzidong’);

var person2 = new Person(‘mm’);

person1.getname //mm

person2.getname //mm

评价:

name 被所有的实例所共享

时间: 2024-10-19 14:23:17

闭包最常用的三种用法的相关文章

数据导入HBase最常用的三种方式及实践分析

数据导入HBase最常用的三种方式及实践分析         摘要:要使用Hadoop,需要将现有的各种类型的数据库或数据文件中的数据导入HBase.一般而言,有三种常见方式:使用HBase的API中的Put方法,使用HBase 的bulk load工具和使用定制的MapReduce Job方式.本文均有详细描述. [编者按]要使用Hadoop,数据合并至关重要,HBase应用甚广.一般而言,需要 针对不同情景模式将现有的各种类型的数据库或数据文件中的数据转入至HBase 中.常见方式为:使用H

PHP常用的三种设计模式

本文为大家介绍常用的三种php设计模式:单例模式.工厂模式.观察者模式,有需要的朋友可以参考下. 一.首先来看,单例模式 所谓单例模式,就是确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例,即在应用程序中只会有这个类的一个实例存在.通常单例模式用在仅允许数据库访问对象的实例中,从而防止打开多个数据库连接,单例模式是一种常见的设计模式,在计算机系统中,线程池.缓存.日志对象.对话框.打印机.数据库操作.显卡的驱动程序常被设计成单例. 一个单例类应包括以下几点:和普通类不同,单例类不能

指针与引用的区别以及引用的三种用法

1.指针与引用的区别: 指针是一块内存的地址值,而引用是一块内存的别名. 下面引自:http://www.cnblogs.com/kingln/articles/1129114.html 从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一

Android中常用的三种存储方法浅析

Android中常用的三种存储方法浅析 Android中数据存储有5种方式: [1]使用SharedPreferences存储数据 [2]文件存储数据 [3]SQLite数据库存储数据 [4]使用ContentProvider存储数据 [5]网络存储数据 在这里我只总结了三种我用到过的或即将可能用到的三种存储方法. 一.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置信息比如窗口状态,它的本质是基

java中 this 的三种用法

Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 (3)this调用构造方法只能在本构造方法中调用另一个构造方法(4)this 调用构造方法必须写在第一行 eg: 1 public class ThisDemo { 2 private int id; 3 private String name; 4 public ThisDemo(){ //(1)

c# new的三种用法

在 C# 中,new 关键字可用作运算符.修饰符或约束. 1)new 运算符:用于创建对象和调用构造函数.这种大家都比较熟悉,没什么好说的了. 2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员. 3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型. 东西不用就会忘c# new的三种用法,布布扣,bubuko.com

JavaScript的简介以及常用的三种对话框

JavaScript中常用的三种对话框 alert().confirm().prompt()的区别和联系: 1.警告框alert() alert是警告框,只有一个按钮"确定"无返回值,警告框经常用于确保用户可以得到某些信息.当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法: <script type="text\javascript"> alert("文本"). </script> 2.确认框confirm()

JavaScript的介绍、常用的三种对话框

JavaScript中常用的三种对话框 alert().confirm().prompt()的区别和联系: 1.警告框alert() alert是警告框,只有一个按钮"确定"无返回值,警告框经常用于确保用户可以得到某些信息.当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法: <script type="text\javascript"> alert("文本"). </script> 2.确认框confirm()

SQL、LINQ、Lambda 三种用法(转)

SQL.LINQ.Lambda 三种用法 颜色注释: SQL LinqToSql Lambda QA 1. 查询Student表中的所有记录的Sname.Ssex和Class列. select sname,ssex,class from student Linq: from s in Students select new { s.SNAME, s.SSEX, s.CLASS } Lambda: Students.Select( s => new { SNAME = s.SNAME,SSEX =