call、apply、bind三者比较

var obj={a:1};
var foo={
    getA:function(item1,item2){
        return this.a+item1+item2
    }
}
// apply绑定参数为数组,一一对应函数的所需参数
console.log(foo.getA.apply(obj,[2,3])) // 6
// call绑定参数为一一对应函数的所需参数
console.log(foo.getA.call(obj,2,3)) // 6
// 使用bind为定义非立即调用函数
console.log(foo.getA.bind(obj,2,3)) // ƒ (item1,item2){return this.a+item1+item2}
console.log(foo.getA.bind(obj,2,3)()) // 6

  

原文地址:https://www.cnblogs.com/yuzhongyu/p/13921390.html