目录

JavaScript 函数 apply()


方法重用

随着apply()方法,您可以编写一个可用于不同对象的方法。


JavaScript apply() 方法

这个apply()方法类似于call()方法(前一章)。

在这个例子中全名的方法应用人1

示例

const person = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}

const person1 = {
  firstName: "Mary",
  lastName: "Doe"
}

// This will return "Mary Doe":
person.fullName.apply(person1);

亲自试一试 »


call() 和 apply() 之间的区别

区别在于:

这个call()方法接受参数分别地

这个apply()方法将参数作为数组

如果您想使用数组而不是参数列表,则 apply() 方法非常方便。


带参数的 apply() 方法

这个apply()方法接受数组中的参数:

示例

const person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}

const person1 = {
  firstName:"John",
  lastName: "Doe"
}

person.fullName.apply(person1, ["Oslo", "Norway"]);

亲自试一试 »

call()方法:

示例

const person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}

const person1 = {
  firstName:"John",
  lastName: "Doe"
}

person.fullName.call(person1, "Oslo", "Norway");

亲自试一试 »



在数组上模拟 Max 方法

您可以使用以下命令找到最大的数字(在数字列表中)Math.max()方法:

示例

Math.max(1,2,3);  // Will return 3

亲自试一试 »

自从 JavaScript数组没有 max() 方法,您可以应用Math.max()方法代替。

示例

Math.max.apply(null, [1,2,3]); // Will also return 3

亲自试一试 »

第一个参数(空)并不重要。本例中未使用它。

这些示例将给出相同的结果:

示例

Math.max.apply(Math, [1,2,3]); // Will also return 3

亲自试一试 »

示例

Math.max.apply(" ", [1,2,3]); // Will also return 3

亲自试一试 »

示例

Math.max.apply(0, [1,2,3]); // Will also return 3

亲自试一试 »


JavaScript 严格模式

在 JavaScript 严格模式下,如果第一个参数apply()方法不是对象,它成为被调用函数的所有者(对象)。在"non-strict"模式下,它成为全局对象。