this-->当前行为发生的主体就是this,但是this是谁和这个方法在哪执行的或者在哪定义的都没有半毛钱的关系
如何的区分JS中的this?
1)函数执行,看函数名前面是否有".",有的话"."前面是谁this就是谁,没有的话this就是window
var person = {
name: "程明杰",
eat: function () {
console.log(this);//-->person
console.log("人是铁饭是钢,一顿不吃饿得慌~~");
}
};
person.eat();
function fn() {
function f() {
console.log(this);//-->window
}
f();
}
fn();
2、自执行函数中的this永远是window
~function () {
console.log(this);//this-->window
}();
var obj = {
//把自执行函数的返回值100赋值给obj下的属性名fn-->obj.fn=100
fn: (function () {
console.log(this);//window
return 100;
})()
};
3、给元素的某一个事件绑定方法的时候,只有事件被触发了才会执行对应的函数,此时函数中的this是当前的元素
oDiv.onclick=function(){
console.log(this); //this-->oDiv
}
this只有在函数执行的时候我们才能确认执行的主体,但是和在哪执行没关系
function fn() {
console.log(this); //函数不执行它是是谁我也不知道
}
来源:珠峰培训