1. call方法使用一个指定的this值和单独给出的一个或多个参数来调用一个函数。 apply使用一个指定的this值和一个参数数组或类数组来调用一个函数。

这两个函数的第一个参数都是指定的this值,apply的第二个参数是array,而call的第二个到第N个参数就是第二个到第N个参数。

语法

  1. func.apply(thisArg, [argsArray])
  2. func.apply(thisArg, arg1, arg2, ...)

注意,this值不一定是该函数执行真正的this值,如果函数在非严格模式下,则指定null和undefined的this值会自动指向全局对象(浏览器环境就是window对象),同时值为原始值(数字、字符串、布尔值)的this值会指向该原始值的自动包装对象。

call的用法

1. 调用父构造函数

  1. function Product(name, price){
  2. this.name = name;
  3. this.price = price;
  4. }
  5. function Food(name, price){
  6. Product.call(this, name, price);
  7. this.category = 'food';
  8. }
  9. var food = new Food('西红柿', 3.5, 'food')
  10. document.write(`名字:${food.name} | 价格: ${food.price} | 类别: ${food.category}`)

this 指向

  1. var a = {
  2. b: function () {
  3. console.log(this);
  4. },
  5. };
  6. var c = () => {
  7. console.log(this);
  8. };
  9. a.b();
  10. c();

参考