call、apply、bind都是Function对象的方法
1、apply调用一个函数,可以指定this值
Function.apply(obj, args)
obj: 这个对象将替代Function类里的this对象
args: 是一个数组
2、call
Function.call(obj, ...args)
args: 单个参数
var stu1 = {
name: "Tom",
say: function (age, school) {
console.log(this.name, age, school);
},
};
var stu2 = {
name: "Jack",
}
stu1.say(18, '清华'); // Tom 18 清华
stu1.say.call(stu2, 28, '北大'); // Jack 28 北大
stu1.say.apply(stu2, [28, '北大']); // Jack 28 北大
类数组转数组
var arr = Array.prototype.slice.apply(arguments)
3、bind:
类似call, 不同之处在于call调用之后立即执行,bind需要一个变量进行接收之后再执行