匿名函数

关于JavaScript的最头疼的事情之一是,它的变量没有特定的作用范围。 一般情况下,任何变量,函数,数组或对象都是全局性,这意味着在同一页上的其他脚本可以访问并覆盖它们。解决方法是把变量封装在一个匿名函数中。 例如,下面的定义将产生三个全局变量和和两个全局函数:

1 var name = 'Chris';
2 var age = '34';
3 var status = 'single';
4 function createMember(){
5   // [...]
6 }
7 function getMemberDetails(){
8   // [...]
9 }

 封装后如下:

 1 var myApplication = function(){
 2   var name = 'Chris';
 3   var age = '34';
 4   var status = 'single';
 5   return{
 6     createMember:function(){
 7       // [...]
 8     },
 9     getMemberDetails:function(){
10       // [...]
11     }
12   }
13 }();
14 // myApplication.createMember() and
15 // myApplication.getMemberDetails() now works.

这被称为单体模式,是JavaScript设计模式的一种,这种模式在YUI中用得非常多,改进的写法是:  

 1 ar myApplication = function(){
 2   var name = 'Chris';
 3   var age = '34';
 4   var status = 'single';
 5   function createMember(){
 6     // [...]
 7   }
 8   function getMemberDetails(){
 9     // [...]
10   }
11   return{
12     create:createMember,
13     get:getMemberDetails
14   }
15 }();
16 //myApplication.get() and myApplication.create() now work.

 

posted @ 2014-04-30 17:36  不忘初心2017  阅读(91)  评论(0编辑  收藏  举报