this 指向四种规则

谁调用它,this就指向谁。  这是目前判断this指向用的最多的方法,但是仅通过这句话,只能判断最简单的一些this指向,在很多情况下并不能准确的判断this的指向,因此可以用四种规则来判断this的指向。
ps:  this指向在严格模式下以及非严格模式下 是不一样的,因此在说this指向时 还要区分是否是严格模式。
this绑定规则一共分为四种:默认绑定,隐式绑定,显示绑定,new绑定。并且四种绑定规则的优先级顺序是 new绑定 > 显示绑定 > 隐式绑定 >  默认绑定。
接下来我们先看一下四种绑定的样子是什么样的:
  1. new绑定
           
        ps: 构造函数返回的如果是function 或者 object  this指向的就是返回的对象
 
2.显示绑定
    
new apply  bind 是显示绑定的三中方法 this指向的就是绑定的对象
 
3.隐式绑定
隐式绑定的调用是发生在某个对象上的,一般为xxx.fn( )
 
4.默认绑定
 
 
介绍完了四种绑定规则,那么就教大家一个判断的顺序以及方法
1.函数是不是在new中被调用 如果是 那么指向新创建的对象
2.函数是不是通过call,apply,bind调用,如果是,那么指向绑定的对象
3.函数是不是被某个对象调用,如果是,那么指向这个对象
4.如果以上都没有,那么就是使用的默认绑定,在非严格模式下,this指向全局
ps: 介绍两种特殊情况
1.我们在写call apply 以及bind的时候 第一个参数其实是可以传null的  当传null的时候 this遵循默认绑定的规则
2.箭头函数是没有自己的this的 箭头函数里的this是继承的上一级代码里的this。
 
posted @ 2019-07-08 22:41  MrWwwu  阅读(509)  评论(0编辑  收藏  举报