javascript - JS中一个闭包问题。不理解最后的输出结果。

查看:125
本文介绍了javascript - JS中一个闭包问题。不理解最后的输出结果。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

此处的getNameFunc()是作为object对象的一个方法被调用的对吗?
如果是的话,那么this即被绑定到了object对象了的是吧?
那么为什么return this.name时,输出全局变量'The Window'而不是object中的name属性值'My Object'呢?

解决方案

这不应该算是闭包问题,而是this的指向问题……
每个函数(含嵌套函数)都有自己的this和arguments,内函数的this和arguments不等于外函数的this和arguments,这在犀牛书函数一章有讲,至于为什么没说……
内部函数引用外部的this,需要在外部函数中设置局部变量,如self=this,arguments相同……利用闭包,内部函数可以调用外部函数的变量而获取外部函数的调用对象this
内部函数的this就是全局变量window,在严格模式下好像是undefined

这篇关于javascript - JS中一个闭包问题。不理解最后的输出结果。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆