javascript-匿名函数、闭包应用(3).

模仿块级作用域

 1 function box()
 2         {
 3             //包含在我执行的匿名函数,就可以实现私有作用域
 4             (function()
 5             {
 6                 for(var i=0 i<5; i++)
 7                 {
 8                     alert(i);
 9                 }
10                             //这里面使用的变量
11             })();            //出了这里被销毁了
12
13             alert(i);
14         }
15
16         box();

这里就是全局的私有作用域

1 (function()
2         {
3             var age =100;
4             alert(age);
5         })();
6         alert(age);

私有变量

 1 //首先私有变量是没有办法访问的
 2         function box()
 3         {
 4             var age = 100;   //私有变量,外部无法访问
 5         }
 6         alert(age);
 7
 8         //但是属性和方法是公有的
 9         function Box()
10         {
11             this.age=100;                    //属性,公有的
12             this.run=function()                //方法,公有的
13             {
14                 return ‘运行中...‘;
15             }
16         }
17
18         var box1=new Box();
19         alert(box1.age);
20         alert(box1.run());

★★私有变量私有函数 怎么通过一个公共的方法访问[其实就是利用 作用的关系(词法作用域)嵌套方法内可以访问到 变量 ,方法又是共有的特性来实现]

 1 function Box()
 2         {
 3             //私有变量
 4             var age=100;
 5             var num=‘Jack‘;
 6
 7             //私有函数
 8             function run()
 9             {
10                 return num+‘运行中...‘;
11             }
12
13             this.publicGo = function()       //对外可见的公共接口,特权方法
14             {
15                 return age+run();
16             }
17             this.getAge=function()
18             {
19                 return age;
20             }
21         }
22
23         var box= new Box();
24         alert(box.publicGo());                //100Jack运行中...

★★通过 构造函数传递参数

 1 function Box(value)
 2         {
 3             var user=value;
 4             this.getUser =function()
 5             {
 6                 return user;
 7             }
 8             this.setUser=function(value1)
 9             {
10                 user=value1;
11             }
12         }
13
14         var box =new Box(‘Lee‘);
15         alert(box.getUser());
16         box.setUser(‘OOO‘);            //可以设置
17         alert(box.getUser());

----但问题是 匿名函数会被多次创建 不是共享解决如下

★★块级作用域访问 静态私有变量 私有函数

 1 (function()
 2         {
 3             var user =‘‘;           //私有变量
 4             Box=function(value)        //Box 没有var 所以是全局,构造函数
 5             {
 6                 user =value;
 7             };
 8             Box.prototype.getUser=function()
 9             {
10                 return user;
11             }
12             Box.prototype.setUser=function(value)
13             {
14                 user =value;
15             }
16
17         })();
18
19         var box= new Box(‘LEE‘);
20         alert(box.getUser());            // LEE
21
22         var box2=new Box(‘KKK‘);
23         alert(box.getUser());            // KKK
24
25         box2.getUser(‘OOOO‘);
26         alert(box.getUser());            // OOOO
27
28         //ps:使用了prototype导致方法共享了,而user也就变成静态属性了。(所谓静态属性,即共享于不同对象中的属性)

★★★★模块模式-简单提下

1 //什么叫 单例,就是永远只实例化一次,其实就是字面量对象声明方式
2
3         var box = {          //第一次实例化,无法第二次实例化,那么就是单例
4             user=‘lee‘,
5             run:function()
6             {
7                 return ‘远行中...‘;
8             }
9         }
 1 //私有化变量和函数
 2 var box=function()
 3         {
 4             var user =‘lee‘;               //私有变量
 5             function run()                //私有函数
 6             {
 7                 return ‘运行中‘;
 8             }
 9
10             return{                       //这里就是对外特权方法
11                 publicGo:function()
12                 {
13                     return user +run();
14                 }
15             };
16             /*
17             var obj={                       //这里就是对外特权方法
18                 publicGo:function()
19                 {
20                     return user +run();
21                 }
22             }
23             return obj;
24             */
25         }();
26
27         alert(box.publicGo());
时间: 2024-10-22 15:05:20

javascript-匿名函数、闭包应用(3).的相关文章

javascript匿名函数 闭包

匿名函数 (function(){                console.info("111111111");            })(); var my = (function(){                return "11111111";            })(); 函数里放匿名函数叫闭包 function my(){                return function(){                    retur

js匿名函数闭包

函数声明: function functionName(arg0,arg1){ //函数体 } 函数表达式: var functionName = function(arg0,arg1){ //函数体 } 函数声明和函数表达式之间的主要区别是前者会在代码执行前被加载到作用域中,而后者是在代码执行到那一行的时候才会有定义.另一个区别是函数声明会给函数指定一个名字,而函数表达式则创建一个匿名函数,然后将这个函数赋给一个变量 1 递归 递归函数是在一个函数通过名字调用自身的情况下构成的,例如: fun

JavaScript 匿名函数

// 仅执行一次的匿名函数 ;(function ()//最常见的版本 圆括号包裹起来 表示输入括号很纠结 懒人绝对不理解为什么要有圆括号 { ; console.log( 1 ,2 ,3 ) }()) ;!function ()//其实也可以这样使用 偷懒成功 { ; console.log( 1 ,2 ,3 ) }() , function ()//只要 function 前面不是 分号 花括号等结束符号 是可以直接用逗号使用的 { ; console.log( 4 ,5 ,6 ) }()

JavaScript匿名函数的使用

JavaScript匿名函数的使用:  http://www.cnblogs.com/skykang/archive/2010/12/03/1895274.html 一.什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: 1. 函数关键字(function)语句:       function fnMethodName(x){alert(x);}    2. 函数字面量(Function Literals):       var fnMethodName = functio

速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

[源码下载] 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函数返回值 可变函数 匿名函数 闭包函数 回调函数 示例1.函数的相关知识点 1(基础)function/function1.php <?php /** * 函数的相关知识点 1(基础) */ // 可以在相关的 function 声明语句之前调用该函数 f1(); function f1() { echo "f1"; echo "<br />"; } // 这里调用

(转)javascript匿名函数的写法、传参和递归

(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-08-07 断桥残雪部落格 投递稿件 我有话说 今天在整理javascript入门培训的PPT时,提到了匿名函数,所以拿来分享下心得. 匿名函数的写法顾名思义,就是没有名字的函数(⊙﹏⊙b汗).匿名函数通常用于javascript作用域的控制,可以有效的避免对全局变量的污染.常见的匿名函数有下面四种写

(转)Javascript匿名函数的写法、传参、递归

(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-08-07 断桥残雪部落格 投递稿件 我有话说 今天在整理javascript入门培训的PPT时,提到了匿名函数,所以拿来分享下心得. 匿名函数的写法顾名思义,就是没有名字的函数(⊙﹏⊙b汗).匿名函数通常用于javascript作用域的控制,可以有效的

JavaScript匿名函数与委托

<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- C#匿名函数--> <title></title> <script type="text/javascript"> var f1 = function (x, y) { //[1] 定义一个匿名函数,用变量f1来指向它(f1相当于一个委托,这个时候f1就可以当做一个

javascript匿名函数的各种执行形式

近期在研究Pomelo源码,这个框架基于Node.js,所以非要频繁地与JavaScript脚本打交道不可.因此,本文中我们来总结 javascript语言中匿名函数的主要目的及各种存在形式.其实,匿名函数在许多语言中都有提供,这个词语各位应该不陌生. 一.函数与匿名函数        首先,我们来看一下在javascript中正常函数定义的语法: function functionname(var1,var2,...,varX) {     //...函数体 } 如上所示,正常函数的定义需要一

Javascript 匿名函数与闭包

请见如下一个闭包示例: color = "red"; var obj = { color: "blue", getColor: function () { function displayColor() { return this.color; } return displayColor(); } } console.log(obj.getColor()); 在getColor函数内部再定义了一个displayColor,再又定义了一个displayColor函数,