js基础知识点-bind、apply、call的区别

93 阅读1分钟

1、bind、apply、call的区别

共同点:都允许为不同的对象分配和调用属于一个对象的函数/方法,改变函数内 this 的指向。

  1. 都是用来改变函数的this对象的指向的。
  2. 第一个参数都是this要指向的对象。
  3. 都可以利用后续参数传参。 不同点
  4. apply 第二个参数为数组 和 call 接收的参数形式不同
  5. apply 和 call 都是直接调用函数并得到函数执行结果,而 bind 会返回待执行函数,需要再次调用
   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.call(xh,"实验小学","六年级");
  	   xw.say.apply(xh,["实验小学","六年级郑州牛皮癣医院"]);
       xw.say.bind(xh,"实验小学","六年级")(); 或者 xw.say.bind(xh)("实验小学","六年级");