码迷,mamicode.com
首页 > 编程语言 > 详细

关于-javascript-闭包作用域 记录

时间:2015-01-04 22:51:30      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

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-闭包作用域 记录

标签:

原文地址:http://www.cnblogs.com/VanqusherCsn/p/4202341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!