携手创作,共同成长!这是我参与「掘金日新计划 · 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(){
console。log(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哪个元素绑定这个点击事件,就返回谁