题目一
function fun(){
return this.a+this.b;
}
var a=1;
var b=2;
var obj={
a:3,
b:fun(),
fun:fun
};
var result=obj.fun();
console.log(result);
打印结果:6
代码运行到obj的时候,执行b:fun()
此时的fun函数的this是指向window的
也就是说:fun()的结果是3 即b:3
var result=obj.fun();
此时的fun函数的this是指向对象obj的
此时的a:3 b:3
所以结果是6
题目二
var a=1;
var obj={
a:2,
fun:(function(){
var a=this.a;
return function () {
console.log(a+this.a)
}
})()
};
obj.fun();
var a=this.a; 这里的a指的是挂在window上的a 所以a=1
console.log(a+this.a)变为 console.log(1+this.a)
console.log(a+this.a)里的this指的是obj
因为是obj调用的,所以就是this.a=2