方法盗用小队:call,apply,bind

221 阅读1分钟

基本使用

语法:

fun.call(this指向, 参数1, 参数2, ...)

fun.apply(this指向, [参数1, 参数2,...])

fun.bind(this指向, 参数1, 参数2, ...) thisArg(可选):

  • 非严格模式下:this指向指定为null,undefined时,fun中的this指向window对象

  • 严格模式下:this指向指定为null,undefined时,fun的this为undefined

  • 值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象,如 String、Number、Boolean

返回值:

call()返回被调用函数执行的结果

apply()返回被调用函数执行的结果

bind()返回被调用函数的拷贝,并拥有指定的this值和初始参数

应用场景

改变函数执行时的this指向,用来借用其他对象的方法

三者区别

call与apply的唯一区别:

传给被调用函数的参数写法不同

call/apply与bind的区别:

执行

  • call/apply改变了函数的this上下文后马上执行该函数
  • bind则是返回改变了上下文后的函数,不执行该函数

返回值不同