js闭包

所谓闭包,就是变量 从外部开始,到达父函数体,然后再从父函数体内的函数(子函数) 返回到父函数体,简单一句话概括:函数外部调用函数内部的变量。

通过下面的代码给出结果,解释一下你的答案:

   
   
  1. var fullname = 'John Doe';
  2. var obj = {
  3. fullname: 'Colin Ihrig',
  4. prop: {
  5. fullname: 'Aurelio De Rosa',
  6. getFullname: function() {
  7. return this.fullname;
  8. }
  9. }
  10. };
  11. (1)console.log(obj.prop.getFullname());
  12. (2)var test = obj.prop.getFullname; //可以写成window.obj.prop.getFullname
  13. console.log(test());

答案:

 Aurelio De Rosa 和John Doe。一直没理解为什么输出是这样的,看到一个有关函数声明和函数表达式的说明和之前的js执行的过程(从声明开始再是表达式),觉得还是可以解释下这个问题的;

再看个例子:

var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
  };


  alert(object.getNameFunc()()); //可以写成window.object.getNameFunc();


     代码片段2:

 

var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      var that = this; //这里的this指代的就是object本身了。
      return function(){
        return that.name;
      };
    }
  };

  alert(object.getNameFunc()());

再看一个例子:

(function(){
       var result=[];
	   for(var i=0;i<10;i++){
	       result[i]=function(){
		       return i;
			  
			}
	    }
		alert(result[1]());
	})();









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值