JS中关于this指向得一道经典面试题

问题: 请问下面最终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 的问题

猜你喜欢

转载自blog.csdn.net/XU441520/article/details/108757862