该题难度系数: ★★★
考查的技术点: 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'。