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

阿里巴巴js面试题3

2017-08-06 17:12 246 查看
该题难度系数: ★★★

考查的技术点: 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'。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: