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。
问:严格模式和非严格模式的区别?