要了解this的指向问题必须了解两点:
1:this永远指向一个对象;
2:this的指向完全取决于函数调用的位置;
一、在全局作用域下的指向
console.log(this);//指向window
二、在普通函数中谁调用就指向谁
var obj = {
fn1:function() {
console.log(this);
},
fn2:function(){
fn3() //所以这里的调用指向与全局的指向一样
}
}
function fn3() {
console.log(this); //这里是在全局下的调用
}
fn3();//this->window
obj.fn1();//this->obj
obj.fn2();//this->window
三、在事件函数中指向事件源
单击后打印的就是这个给事件源绑定事件的它
var div = document.querySelector('div');
div.addEventListener('click',function() {
console.log(this); //this->div
});
div.onclick = function() {
console.log(this) //this->div
}
四、在定时器中的指向window
定时器就是window下的一个对象,所以指向的就是window
setInterval(function() {
console.log(this); //this->window
},500)
setTimeout(function() {
console.log(this); //this->window
},500)
五、构造函数中指向实例化对象
function Obj(name,nan){
this.name=name
this.nan=function(){
console.log(this);
}
}
var obj_1=new Obj('名字','nan')
obj_1.nan();//==>obj_1
转载自CSDN博主「LoveyL0201」的原创文章