this永远只想最后调用他的那个对象
- 作为一个普通函数调用
var name = "windowsName";
function a() {
var name = "Cherry";
console.log(this.name); // windowsName
console.log("inner:" + this); // inner: Window
}
a();
console.log("outer:" + this) // outer: Window
非严格模式下this默认指向window全局对象,严格模式下则会undefined
- 函数作为方法调用
var name = "windowsName";
var a = {
name: "Cherry",
fn : function () {
console.log(this.name); // Cherry
}
}
a.fn();
this指向最后调用他的对象a
- 作为构造函数调用函数
// 构造函数:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
var a = new myFunction("Li","Cherry");
a.lastName; // 返回 "Cherry"
this指向最后调用他的对象a (实际上是在new的过程中call改变了this的指向)