您的位置:首页 > 职场人生

阿里巴巴js面试题3

2017-08-16 16:12 148 查看
转自http://blog.csdn.net/qq_27682041/article/details/76779986

该题难度系数: ★★★

考查的技术点: 1). this  2). 闭包

题目如下:

[javascript] view
plain copy

var name = "A"  

var object = {  

  name: "B",  

  getNameFunc: function () {  

    return function () {  

      return this.name    

    }  

  }  

}  

console.log(object.getNameFunc()())    

  

  

var name2 = "A"  

var object2 = {  

  name2: "B",  

  getNameFunc: function () {  

    var that = this    

    return function () {  

      return that.name2  

    }  

  }  

}  

console.log(object2.getNameFunc()())   

运行结果:



接下来我们分析一下:

第一道题:object.getNameFunc()里面有一个闭包,返回的是一个函数,然后加个()就表示函数的调用了。而此时是默认的执行方式,this代表window,那么name就是全局变量‘A’;

第二道题:注意到,里面先对this进行缓存起来,this代表object,当object.getNameFunc()返回一个函数时,调用就返回的是一个object的name2属性值'B'。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息