前端学习中的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指向的。
 


                    
                
                
            
        
浙公网安备 33010602011771号