JavaScript Function apply()
方法重用
使用 apply()
方法,您可以編寫一個可以用於不同物件的方法。
JavaScript apply() 方法
JavaScript 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");
模擬陣列的 Max 方法
您可以使用 Math.max()
方法查詢最大數字(數字列表中的最大值)。
由於 JavaScript **陣列** 沒有 max() 方法,因此您可以改用 Math.max()
方法。
第一個引數 (null) 無關緊要。在此示例中未使用。
這些示例將產生相同的結果
JavaScript 嚴格模式
在 JavaScript 嚴格模式下,如果 apply()
方法的第一個引數不是物件,它將成為呼叫函式的“所有者”(物件)。在“非嚴格”模式下,它將成為全域性物件。