前端学习中的this指向

一般this指向会有四种形式:优先级:默认绑定<隐式绑定<显示绑定<new绑定

一、默认绑定

函数立即执行有两种方式:

第一种:

 

第二种:

 

什么是闭包:

当函数被执行的时候,导致函数被定义并且抛出。

那么我们现在看一下这个闭包当中的this指向:

 上面的闭包和两种函数的定义主要是诠释了函数的独立调用的规则,下面我们来看一下this指向的第二种

二、隐式绑定

函数内部的this项。

每一个函数执行,都会有一个自身的this指向,这个this指向可能相同,但是本身是不同的。函数在执行的时候才会产生自己的this项,函数不执行的时候不会产生this项,这个函数也就没有任何意义。也就不会有this指向了。反过来说每一个this的指向都代表一个函数的执行,

只有在函数执行的时候,才会产生这个this,现在这个函数执行了吗?没有执行!,因为这个bar是在赋值完之后再执行的

 虽然给了一个对象,但是并没有执行。我们再观察这个this指向的时候,一定要抓住这个函数在哪里执行的。所以这个bar指向window。我们只看这个this指向的时候,一定要看当前这个函数是怎么执行的!!!!如果是独立执行的,就是window,如果是对象调用,那么就是对象obj。

 

由bar内部的代码的执行方式来决定这个fn的指向,我现在如果就是想让this指向obj,又有没有办法呢?肯定有的

使用call指令。也就是显示绑定

父函数是有能力决定子函数的this指向的。就比如现在这里面的bar函数是父函数,而fn函数是子函数。

就拿第一个foreach来说,决定这个this指向,就是看这个foreach是怎样写的。Foreach就相当于类置接口。

当父函数的参数是一个函数的时候,我们可以称这个参数是一个回调函数。

 

显示绑定就是为了更改this指向的。

 

posted @ 2021-10-06 23:56  一折霖兮  阅读(209)  评论(0)    收藏  举报