call:
1.可以调用函数 函数.call()
2.修改函数中的this指向
3.语法:函数.call(对象,实参1,...)
apply:
1.可以调用函数 函数.apply()
2.修改函数中的this指向
3.语法:函数.apply(对象,[实参1,...]) ---> 实参必须是数组形式
bind:
1.可以调用函数 函数.bind() ===> 但不会执行函数中的代码
2.有返回值:返回当前bind调用的函数 ===> 返回值加()可以调用
3.修改函数中的this指向
4.语法:函数.bind(对象,实参1,...)
function fn() {
console.log(123)
console.log(this)
}
let res = fn.bind(document)
res()
总结:
1.call经常用来做继承
2.apply经常跟数组相关,比如借助数学对象求最大/最小值
3.bind不调用函数,但又想改变函数内部this指向,就用bind