基本使用
语法:
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则是返回改变了上下文后的函数,不执行该函数
返回值不同