阿里巴巴js面试题3

来源:互联网 发布:宁德catl知乎 编辑:程序博客网 时间:2024/06/05 10:42

该题难度系数: ★★★

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

题目如下:

  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'。

原创粉丝点击