执行以下程序,输出结果为()
var uname = "window";
var object = {
uname :"object",
fun:function(){
console.log(this.uname);
return function(){
console.log(this.uname);
}
}
}
object.fun()();
A
object
B
window
C
object window
D
window object
正确答案:C
object.fun()()等效于var fn = object.fun(); fn();
实际上是调用函数两次,第一次是调用object对象的fun函数,第二次是调用fun函数的返回函数。
第一次调用fun函数时,this指向上一级对象,即object对象,因此输出对象object的uname属性值object,
第二次调用的返回函数,其this指向window对象,这是因为匿名函数具有全局性,匿名函数的this指向window对象,因此输出结果为window对象的uname属性值window。