码迷,mamicode.com
首页 > 其他好文 > 详细

一道有关作用域的题目。

时间:2015-06-19 16:42:24      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

     先来看段代码:

 

    var name = ‘this window‘;

    var object = {

        name : "My Object",
        getNameFunc: function () {
            return function () {
                alert(this.name);
            }
        }
    }
    var a = object.getNameFunc();
    a() ;
     
 
 
     答案是:’this window‘。有点出乎意料,这个this明明在object里,为什么打印出来是this window而不是My Object呢?
     作用域是在函数定义时确立的,在一个函数内部还存在一个函数时,初次只会定义最外层的函数,内部的函数只会在外部函数执行的时候才会定义。而外部函数执行时 var a = object.getNameFunc();由于闭包内部函数被脱离了本来应该有的上下文,回到了全局作用域。所以此时this指向window。
    
    

一道有关作用域的题目。

标签:

原文地址:http://www.cnblogs.com/liubinga/p/4588992.html

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