面试题:call 、apply、bind区别

callapplybind 区别

首先明确,callapply、和bind都是改变this指向的方法。

该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。

call

// MDN的例子
function Product(name, price) {
  this.name = name;
  this.price = price;
}

function Food(name, price) {
  Product.call(this, name, price);
  this.category = 'food';
}

console.log(new Food('cheese', 5).name);
// expected output: "cheese"

这里是call方法的几种使用场景和示例

apply

call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。

这里是apply方法的几种使用场景和示例

例如:
用 apply 将数组各项添加到另一个数组

// 将元素追加到现有数组
var array = ['a', 'b'];
var elements = [0, 1, 2];
array.push.apply(array, elements);
console.info(array); // ["a", "b", 0, 1, 2]

bind

bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。

callapply 是立即执行的,但 bind是等待调用的时候执行。

这里是bind方法的几种使用场景和示例

你可能感兴趣的:(javaScript,javascript)