问题: 请问下面最终this.number是多少?
window.number = 2;
var obj = {
'number': 3,
'db1': (function(){
console.log(this);
this.number *= 4;
return function(){
console.log(this);
this.number *= 5;
}
})()
}
var db1 = obj.db1;
db1();
obj.db1();
console.log(obj.number);
答案:40
解析:
(1)var db1 = obj.db1; 这个是this.number *= 4;
return function() {
console.log("this", this);
this.number *= 5;
}, 然后window.number 结果是8
(2)db1();是执行的匿名函数 此时的number 是8,匿名函数执行之后是40
(3)obj.db1(); 指的是obj 的函数里面的number,此时为3, 执行匿名函数结果是15
(4)不要想着number,就是一个this 的问题