JavaScript 函数 apply()
方法重用
使用 apply()
方法,你可以编写一个可以在不同对象上使用的方法。
JavaScript apply() 方法
apply()
方法类似于 call()
方法(上一章)。
在这个例子中,person 的 fullName 方法被 应用 到 person1 上
示例
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName: "Mary",
lastName: "Doe"
}
// 这将返回 "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");
模拟数组上的最大值方法
可以使用 Math.max()
方法找到(数字列表中的)最大数字
由于 JavaScript **数组** 没有 max() 方法,您可以改为使用 Math.max()
方法。
第一个参数(null)无关紧要。在本例中未使用它。
这些示例将给出相同的结果
JavaScript 严格模式
在 JavaScript 严格模式下,如果 apply()
方法的第一个参数不是对象,它将成为被调用函数的所有者(对象)。在“非严格”模式下,它将成为全局对象。