函数this三种指向

 1. 函数this指向 : 谁‘调用’我,我就指向谁

            1.1 普通函数:  函数名()         this -> window

            1.2 构造函数:  new 函数名()     this -> new创建实例

            1.3 对象方法:  对象名.方法名()   this -> 对象

 

 2. 函数this指向 : 谁‘调用’我,我就指向谁

            2.1 普通函数:  函数名()         this -> window

           2.2 构造函数:  new 函数名()     this -> new创建实例

            2.3 对象方法:  对象名.方法名()   this -> 对象

 3. 默认情况下,函数内部的this是固定的,无法动态修改。 如果想要动态修改函数this指向,需要使用函数上下文调用。

            * 函数上下文 :  函数作用域

  4. 函数上下文调用 : 动态修改this指向

          4.1  函数名.call()(修改的this,参数1,参数2…………)

            4.2函数名.apply()(修改的this, 数组/伪数组 )

 

伪数组 : 有数组三要素(元素、下标、长度) , 但是不能使用数组的方法

            伪数组本质是对象

            4.3函数名.bind()(修改的this)

总结:  call()  apply()  bind()三者异同点

            相同点: 作用一致,都是修改this指向

            不同点

                (1)传参方式不同 : call是单个传参, apply是数组/伪数组传参

                (2)执行机制不同 : call和apply立即执行函数, bind不会立即执行,而是返回一个修改this之后的新函数。

     (  bind一般用于修改不会立即执行的函数:  定时器函数 , 事件处理函数。    

定时器函数中的this默认是window, 要想修改就需要用 bind)

   

   

猜你喜欢

转载自blog.csdn.net/weixin_66375317/article/details/125436873