JS中的this指的是当前行为主体,context代表的是当前行为执行的环境,this和函数的context没有任何关系。
那么问题来了,如何区分this?
1、函数执行,首先看函数前有没有“.”,若有,则前面是谁this就是谁,若没有,this就是window;
例如:
function fn(){
console.log(this);
}
var obj={fn:fn};
var oo={
sum:function(){
fn();
}
};
function sum(){
fn();
}
fn(); // 输出 window
obj.fn(); // 输出 obj
sum(); // 输出 window
oo.sum(); // 输出 window
2、自执行函数的this是window;
3、给一个对象绑定匿名函数时,该函数的this变为该对象;
例如:给一个元素绑定事件时,事件执行的函数中this 是该元素
document.getElementById("div1").onclick = function(){
console.log(this); // 输出为绑定的div元素
fn(); // 输出为window
}