js中apply、call和bind的区别

1.相同点

(1)都可以用来改变函数的this的指向

(2)使用时第一个参数都是this所指向的对象,并且都可以后续参数传参


2.区别

(1)call跟apply只是参数传参的方式不一样,call以多个参数形式传入,而apply则以数组的形式传入

(2)bind传参的方式可以跟call一样,由于bind返回的是一个函数,因此我们也可以在调用的时候在进行传参

下面看两个例子:

var func1 = {
  name : "teal",
  gender : "",
  age : 20,
   intro: function() {
    alert(this.name + " , " + this.gender + " ,今年" + this.age);
  }
}
var func2 = {
  name : "小红",
  gender : "",
  age : 18
}
//小红 ,  ,今年18
//func1.intro.call(func2);
//func1.intro.apply(func2);
//func1.intro.bind(func2)();

var func1 = {
  name : "teal",
  gender : "",
  age : 24,
  intro : function(province,city) {
    alert(this.name + " , " + this.gender + " ,今年" + this.age + " ,住在" + province + "" + city + "");
  }
}
var func2 = {
  name : "小红",
  gender : "",
  age : 18
}
//  小红 ,  ,今年18 ,住在广东省广州市
//func1.intro.call(func2,"广东","广州");
//func1.intro.apply(func2,["广东","广州"]);
//func1.intro.bind(func2,"广东","广州")();
//func1.intro.bind(func2)("广东","广州");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值