面试题:函数中的this指向

74 阅读1分钟

this指向分不同的情况:全局环境的this指向,函数中的this指向,使用call、aplly时候的this指向,构造函数和原型上的this指向等。本文单独分析函数中的this指向。

var a = 20;
var obj = {
  a: 10,
  c: this.a + 20,
  fn: function () {
    return this.a;
  }
}

console.log(obj.c);  //40
console.log(obj.fn()); //10

单独的{}不会形成新的作用域。所以obj={}里面的this依旧指向window。obj.c = 20 + 20。

如果调用的函数,被某一个对象所拥有,那么函数内部的this指向该对象。如果函数是单独调用,里面的this指向undefined,在非严格模式中,这个undefined指向window。

问:严格模式和非严格模式的区别?