总的来说:this指的就是调用函数的那个对象。
1.匿名函数的执行环境具有全局性,因此其 this 对象通常指向 window。
var name = "The Window";
var obj = {
name: "My Object",
getName: function(){
return function(){
return this.name;
};
}
};
console.log(obj.getName()()); // The Window
2.如果是一般函数,this指向全局对象window;
var name = 'XXXX';
function sayName(){
var name = 'AAA';
console.log(this.name); //XXXX
}
sayName();
3.在严格模式下"use strict",为undefined.
var name = 'XXX';
function sayName(){
"use strict";
var name = 'AAA';
console.log(this.name); // undefined
}
sayName();
4.对象的方法里调用,this指向调用该方法的对象.
5.构造函数里的this,指向创建出来的实例.
var name = 'xx';
var person = {
name: 'aa',
age: 20,
sayName: function(){
var _this = this;
console.log(this.name); // aa
setTimeout(function(){
console.log(_this.name); // aa
console.log(this.name); // xx 因为setTimeOut下的function为匿名函数,this指向全局
console.log(this.age); // undefined 同理
}, 100);
}
}
person.sayName();