开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情
this
this的中文意思就是 这个 ,在js中作为一个关键字有一个指向的功能。如果说有其他语言的基础,在学习js中的this时就得不能受其他语音的影响。在es6还没有出来之前,js中的this比较天真,天真到谁对他好就跟他走。所以就有那么一句口诀:”谁调用我我就指向谁”。但是就偏偏有一个函数不适用这个口诀,那就是es6中的剪头函数,那里面的this就不是这个意思了。
this的调用
this的调用主要就是在下面这几种当中:全局、对象、时间函数、绑定事件。
全局
这的全局一般都指我们的窗口window,在全局中的this比较容易触发,我们直接调用就好了,以及调用一些全局函数中的this,他的指向都是window。
console.log(this) //我们直接在控制台输出,这就是我们窗口调用了这个this
function test(){
console.log(this)
}
window.test() //这里调用这个函数时前面的window一般都是将它忽略,所以里面的这个this指向还是window。
对象
当this在对象中他会指向谁呢,那让我们一起看一下下面的代码。
var obj={
name:'nn',
test:function(){
console.log('111',this)
}
}
obj.test() //在对象中调用this的话,他将会指向这个对象。
//在对象调用的时候也可以把他写成下面这样
window.obj.test() //但是这样会改变我们的结果吗?明显不会,这里还是obj这个对象调用的函数
定时器
按照上面两种的逻辑,在定时器中调用会不会指向定时器呢?
setIntercval(function(){
console.log('1111',this)
},2000)
定时器他是不会直接调用this的,他是在你设定的多少时间之后交给window去处理,所以在定时器中this指向是指向window的。
绑定事件
在绑定事件中就比较简单了,谁绑定的这个事件他指向的就是谁
box.onclick=function(){
console.log('qqqq',this)
}
因为绑定事件本身就要有回调函数,所以他也是调用this的。