JavaScript関数の適用
メソッドの再利用
このapply()
メソッドを使用すると、さまざまなオブジェクトで使用できるメソッドを作成できます。
JavaScriptのapply()メソッド
この方法は、前の章のapply()
方法と似ています。call()
この例では、 personのfullNameメソッドがperson1に適用されます。
例
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
最初の引数(null)は重要ではありません。この例では使用されていません。
これらの例でも同じ結果が得られます。
例
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()
メソッドの最初の引数がオブジェクトでない場合、呼び出された関数の所有者(オブジェクト)になります。「非厳密」モードでは、グローバルオブジェクトになります。