1.共同点都是函数执行绑定方法
2.call() 方法
- 使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。
注意:该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。
- function.call(thisArg, arg1, arg2, ...)
- 返回值 使用调用者提供的 this 值和参数调用该函数的返回值。若该方法没有返回值,则返回 undefined。
3.apply() 方法
- 调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。
- func.apply(thisArg, [argsArray])
- 返回值 调用有指定this值和参数的函数的结果。
4.bind() 方法
- 创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
- function.bind(thisArg[, arg1[, arg2[, ...]]])
- 返回值:返回一个原函数的拷贝,并拥有指定的 this 值和初始参数。
bind:不立即执行该函数;apply和call是立即执行函数
5.使用举例
var obj=fn.call({},3,5);
var obj=fn.apply({},[3,5]);
var obj=fn.bind({})(3,5);
6.手写bind
Funtion.protoType.bind1 = function(){
var self = this;
return function(){
return self.apply(obj,Array.from(arguments))
}