标签:
js想写好 有一些 概念总要理解清楚最近 总结了一些 闭包和作用域的 案例如下
例1.
1 var name = "The Window"; 2 var object = { 3 name : "My Object", 4 getNameFunc : function() 5 { 6 return function() 7 { 8 return this.name; 9 }; 10 } 11 }; 12 13 alert(object.getNameFunc()());//=>The Window
这是在网上 搜到的一个例子
先做一个尝试
var name = "The Window"; var object = { name : "My Object", getNameFunc : function() { return function() { return this.name; }; } }; alert(object.getNameFunc());//注意这里
返回的是
function() { return this.name; };
那么这个例子 就很好理解 实际上 返回给
var object=this.name //=>this就是window
例2.
做了一些改动如下
1 var name = "The Window"; 2 var object ={ 3 name : "My Object", 4 getNameFunc : function() 5 { 6 return (function() 7 { 8 return this.name; 9 })(); 10 } 11 }; 12 13 alert(object.getNameFunc());//=>The Window
1 var name = "The Window"; 2 var object ={ 3 name : "My Object", 4 getNameFunc : function() 5 { 6 return (function(_this) 7 { 8 return _this.name; 9 })(this); 10 } 11 }; 12 13 alert(object.getNameFunc())//My Object
匿名函数的写法 第二种应该比较常见 利用作用域的的特性 传参
例3.
自己尝试了一下
1 var oa=0; 2 3 alert(a()());//=>2 4 5 function a() 6 { 7 var oa = 1; 8 ++oa; 9 return b(oa); 10 } 11 12 function b(oa) 13 { 14 return function() 15 { 16 return oa; 17 }; 18 }
1 var oa=0; 2 3 alert(a()());//2 4 5 function a() 6 { 7 var oa = 1; 8 ++oa; 9 return (function() 10 { 11 return function() 12 { 13 return oa; 14 }; 15 })(); 16 }
这个例子自己 也不是很清晰 有点迷糊
标签:
原文地址:http://www.cnblogs.com/VanqusherCsn/p/4202341.html