您的位置:首页 > 移动开发

js中apply、call和bind的区别

2018-01-04 15:38 701 查看
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)("广东","广州");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: