WEB开发网
开发学院网页设计JavaScript javascript必知必会之closure 阅读

javascript必知必会之closure

 2009-09-21 00:00:00 来源:WEB开发网   
核心提示: closure的一些用法 当内部函数和自由变量位于同一closure时,可以随意访问,而声明顺序并不重要.几个常用的例子://一些应用flag=true;functionOuterFun(){varnum=100;varprintNum=function(){alert(num);}//此处引用

closure的一些用法

当内部函数和自由变量位于同一closure时,可以随意访问,而声明顺序并不重要.

几个常用的例子:

//一些应用
flag = true;
function OuterFun()
{
var num = 100;
var printNum = function(){alert(num);}  //此处引用的num是引用,而不是值,所以后面改变num,此处的num同样生效
num ++;
return printNum;
}
var myfunc = OuterFun();
myfunc();   //输出的是101,而不是100
//另一个例子,下面的例子,可以看到匿名函数(内部函数)先于外部函数变量的声明,但是仍然能够访问外部函数的变量
// 也就是说内部函数与外部函数的变量位于同一个closure, 所以可以访问
function SameClosure()
{
var iCanAccess = function(){alert(name);};
var name = "zhutao";
return iCanAccess;
}
var testSameClosure = SameClosure();
testSameClosure();// zhutao
// 另一个应用,关于module pattern, 这样可以实际所谓的 private, public等方法和变量
var module = (function Module(){
var privateVar = "zhutao is private";   // private
return {
publicGetPrivateVar : function(){
return privateVar;
},  // public method, 可以取所谓的private变量
publicVar : "I'm a public variable" // public variable
};
})();
if (flag)
{
alert(module.publicGetPrivateVar());    // zhutao is private
alert(module.publicVar);                // I'm a public variable
alert(module.privateVar);               // undefined
}

编缉推荐阅读以下文章

  • javascript必知必会之prototype

上一页  1 2 3 4  下一页

Tags:javascript closure

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接