在JavaScript中,this是一个特殊对象,作为一个单独的指针,在不同的情况下指向不同的位置。
1.在全局作用域时
- 这个是最好理解的,即在全局作用域下this指向window,也就是在全局作用域下,this与window是等价的
console.log(this === window); //true
- 由于在此时,this等价于window,所以我们在全局作用域声明的变量也会指向this:
var x = 1;
console.log(this.x);//1
console.log(window.x);//1
2.在函数中时
- 在函数内部出现的this,指什么要看这个this所在的函数的被调用方式。
- 被直接调用时,this指全局对象window。
func();
- 被作为构造函数调用时,this指当前正在构建的对象
new func();
- 被作为某个对象A的方法调用时,this指方法所属的对象A。
A.func();
- 使用函数的apply或call方法调用时,this指第一个参数B。
func.apply(B, [m, n, ...]);
func.call(B, m, n, ...);