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需要一个变量进行接收之后再执行