apply 和 call、bind 的区别

76 阅读1分钟

考点:this 指向

  1. 是否立即调用[bind 绑定之后还是一个函数需要自调一次]
xw.say.bind(xh,"实验小学","六年级")()
xw.say.bind(xh)("实验小学","六年级")
  1. 可以传参数的个数[apply 只能传递两个参数,第一个是需要绑定的 this 对象,第二个是一个数组]
var xw = {
   name : "小王",
   gender : "男",
   age : 24,
   say : function(school,grade) {
      alert(this.name + " , " + this.gender + " ,今年" + this.age + " ,在" + school + "上" + grade);
   }
}
var xh = {
   name : "小红",
   gender : "女",
   age : 18
}


xw.say(); // 小王 , 男 , 今年 24
xw.say.call(xh,'希望小学','三年级'); // 小红 , 女 , 今年 18 在希望小学上三年级
xw.say.apply(xh,['希望小学','三年级']); // 小红 , 女 , 今年 18 在希望小学上三年级
xw.say.bind(xh,'希望小学','三年级')(); // 小红 , 女 , 今年 18 在希望小学上三年级