首页 > 代码库 > 关于-javascript-闭包作用域 记录
关于-javascript-闭包作用域 记录
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 }
这个例子自己 也不是很清晰 有点迷糊
关于-javascript-闭包作用域 记录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。