同
在js中,call、apply、bind这三个方法主要是为了改变函数中this的指向
var a = {
name: "阿里巴巴",
fn:function(){
console.log(this.name);
}
}
var b = a.fn
b() //undefined
b.call(a) // 阿里巴巴
b.apply(a) // 阿里巴巴
b.bind(a) // 没有被打印
异
- apply 和 call 的区别
是第二个参数的传递方式不同,apply 的第二个参数必须是一个数组
(或者类数组),而 call 允许传递一个参数列表var a = { name:"阿里巴巴", fn:function(m,n){ console.log(m+n); } } var b = a.fn; b.call(a,6,6) // 12 b.apply(a,[6,4]) // 10
- bind和call、apply的区别
call和apply都是立即执行
,而bind则是返回一个函数
var a = { name: "阿里巴巴", fn:function(){ console.log(this.name); } } var b = a.fn b.bind(a) // 没有被打印 var c = b.bind(a) console.log(c) //function (){ //console.log(this.name); //} c() // 阿里巴巴