call、apply、bind的使用场景区分(js的问题)

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

你可能感兴趣的:(javascript,前端,java)