call,apply,bind的用法
call
call方法的第一个参数是指定的对象,之后的实参依次传入,用逗号分割
function fun(arg1, arg2) {
console.log(this.name,arg1,arg2)
}
let obj = {
name: "Bob"
}
fun.call(obj, "a", "b") //Bob a b
apply
apply方法的第一个参数是指定的对象,之后的实参放在一个数组里一起传入
function fun(arg1, arg2) {
console.log(this.name,arg1,arg2)
}
let obj = {
name: "Bob"
}
fun.apply(obj, ["a", "b"]) //Bob a b
bind
bind方法与call方法一致,唯一的区别是:bind方法返回的是一个函数,需要调用才能执行
function fun(arg1, arg2) {
console.log(this.name,arg1,arg2)
}
let obj = {
name: "Bob"
}
fun.bind(obj, "a", "b")() //Bob a b