this简要说明

119 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情

解析器在调用函放每次都会向函数内部传递进一个隐含的参数,

这个隐含的参数就是this,this指的是一个对象

这个对象我们称为函数执行的上下对象

根据函数调用方式不同,this会指向不同的对象

var obj = {                                    若fun加括号则为返回值
属性名:属性值; 
属性名:属性值,         
}

谁调用函数this则是谁就是this(指向谁)

1.以函数的形式调用时,this永远都是window

2.以方法的形式调用时,this就是调用方法的那个对象

1.第一种情况

全局作用下或者普通函数中this指向全局变量window,定时器里的this指向window

例子: 直接执行

console.log(this)

打印结果是window 如果是运用函数

function hanshu(){
consolelog(this)
}
// 再调用
window.hanshu()

打印结果依然为window

setTimeout(function(){
console.log(this)
}2000)

最终指向的依然是window,定时器全称为window.setTimeout

第二种情况

方法中谁调用this就指向谁

var obj = {
fangfa:function(){
console.log(this)
}
}
// 调用方法
obj.fangfa();

最终指向是obj这个对象,obj调用了fangfa

var btn= document.querySelector("btn");
btn.onclick=function(){
console.log(this);
}
btn.addEventListener("click",function(){
console.log(this)
})

那么this指向btn这个按钮对象

第三种情况

构造函数中this指向构造函数的实例

function hanshu(){
console.log(this)
}
// 构造函数
var hanshu=new hanshu();

this指向hanshu,指向构造对象

new关键字执行过程

构造函数时要用new 1.当遇到new时,在内存中创建一个空的对象

2.this就都得指向这些对象

3.执行构造函数内的代码,给这个空对象添加属性和方法

4.返回该对象,则构造函数就不需要return

e.target和this

1.e.target返回的是触发事件的对象(元素),this返回的是绑定事件的对象(元素)

2.e.target 点击了那个元素,那么就返回这个元素,指向点击爹那个对象,谁触发了这个事件 this哪个元素绑定这个点击事件,就返回谁