call方法的作用:
函数名.call(对象,arg1....argn)
1.将this指向第一个参数
2.将第二个及以后所有的参数,作为实参传递给函数
var person = { fullName: function(city, country) { return this.firstName + " " + this.lastName + "," + city + "," + country; } } var person1 = { firstName:"Bill", lastName: "Gates" } person.fullName.call(person1, "Seattle", "USA");
apply方法的使用:
函数名.apply(对象, 数组/伪数组)
-
var a=Math.max.apply( null, [ 1, 2, 5, 3, 4 ] );
-
console.log(a);// 输出:5
bind方法的使用:
-
var a=Math.max.bind( null, 1,2,3,4,5 )();
-
console.log(a);// 输出:5
注意事项
1.call和apply只是传参方式的区别,apply可以通过数组的方式传参
2.call和apply的第一个参数如果是null和underfined,那么this会指向windows
3.call和apply的第一个参数如果为值类型的数据,那么会将这个值类型的数据,转换成其对应的引用类型的数据,然后再将this指向这个引用类型的数据
4.call和apply立即执行这个函数,bind方法可以让对应的函数想什么时候调就什么时候调用,并且可以将参数在执行的时候添加,这是它们的区别,根据自己的实际情况来选择使用。
5.当参数的个数确定的情况下可以使用call;当参数的个数不确定的情况下可以使用apply