函数三种调用方式(this指向)与上下文模式

238 阅读2分钟

函数三种调用方式(this指向)

 函数三种执行模式 : 全局函数 、 对象方法 、 构造函数
     this : 谁 调用 我,我就指向谁
     1. 全局函数 : this指向window
     2. 对象方法 : this指向对象
     3. 构造函数 : this指向new创建的空对象

函数调用的上下文模式

了解上下文模式注意点

  • a.函数上下文三个方法:call() apply() bind(),它们定义在Function构造函数的原型中

  • b.如果将this指向修改为值类型:(number,boolean,string),则函数会自动帮我们包装成对应的引用类型(基本包装类型)

    • 值类型: '123',1,true
    • 基本包装类型:String('123'),Number(1),Boolean(true)

1-函数执行的上下文模式

作用:

可以动态修改函数中的this指向

call()   apply()   bind()
  • 异同点

    • 相同之处:都可以修改函数中this指向

    • 不同点:传参方式不同

      • call()语法: 函数名.call(this修改后的指向,arg1,arg2…………)

      • apply()语法:函数名.apply(this修改之后的指向,伪数组或者数组)

        • bind()语法:函数名.bind(this修改后的指向,arg1,arg2....)
        • bind()语法并不会立即执行函数,而是返回一个修改指向后的新函数,常用于回调函数

2-函数调用上下文模式注意点

1. 函数上下问执行模式 : 动态修改this
    注意点 : 修改的this只能是引用类型
2.如果写的是基本数据类型 
    stringnumberboolean : 自定帮我们转成对应的基本装包类型 new String() Boolean() Number()
  如果传的是undefinednull,或者不传。代码不会报错,也不会帮我们修改this,还是原来的window

面试点 this三种指向

this : 谁 调用 我,我就指向谁

1.全局函数 : this指向window

2.对象方法 : this指向对象

3.构造函数 : this指向new创建的空对象