call()
call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。 语法:
function.call(thisArg, arg1, arg2, ...)
返回值:使用调用者提供的 this 值和参数调用该函数的返回值。若该方法没有返回值,则返回 undefined。
function fn(){
console.log(this)
}
fn() //这是的this就是window
fn.call(1) //Number{1},this指向数字
fn.call(ture) //Boolean{ture},this就是bool
apply()
apply() 方法调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。
语法:
function.apply(thisArg, [argsArray])
返回值:调用有指定this值和参数的函数的结果。
function fn (a,b){
reutrn a+b
}
fn.apply(undefined,[1,2]) //和this的用法差异不大,只是在传参的时候,apply只支持数组形式
bind
bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
语法:
function.bind(thisArg[, arg1[, arg2[, ...]]])
返回值:返回一个原函数的拷贝,并拥有指定的 this 值和初始参数。
// 同样的例子,bind并不会立即执行,它会拷贝原函数,创建一个新的函数,
function fn(a,b){
return a+b
}
let x = fn.bind(undefined,1,2)
x() //3