JavaScriptの関数Apply
- 前のページ JS ファンクション Call
- 次のページ JS ファンクションバインディング
リユース
方法を通じて apply()
方法を使用して、異なるオブジェクトに適用するメソッドを書きかけます。
JavaScript apply() メソッド
apply()
方法と call()
方法は非常に似ています:
この例では、person
の fullName
方法が適用から person1
:
インスタンス
var person = { fullName: function() { return this.firstName + " " + this.lastName; } } var person1 = { firstName: "Bill", lastName: "Gates", } person.fullName.apply(person1); // 返却値は "Bill Gates"
call() と apply() の違い
違いは:
call()
方法はそれぞれの引数を受け取ります。
apply()
方法は配列形式の引数を受け取ります。
配列としての引数リストを使用する場合、 apply()
非常に便利です。
引数付きの apply() メソッド
apply()
方法は配列の引数を受け取ります:
インスタンス
var person = { fullName: function(city, country) { return this.firstName + " " + this.lastName + "," + city + "," + country; } } var person1 = { firstName:"Bill", lastName: "Gates" } person.fullName.apply(person1, ["Oslo", "Norway"]);
と call()
方法比較:
インスタンス
var person = { fullName: function(city, country) { return this.firstName + " " + this.lastName + "," + city + "," + country; } } var person1 = { firstName:"Bill", lastName: "Gates" } person.fullName.call(person1, "Oslo", "Norway");
配列上で max メソッドをシミュレートする
以下のように使用できます Math.max()
メソッドは(数字リストの)最大数字を見つけます:
インスタンス
Math.max(1,2,3); // 3も返されます
JavaScript の配列には max() メソッドがありませんので、以下のように適用できます Math.max()
メソッド。
インスタンス
Math.max.apply(null, [1,2,3]); // 3も返されます
最初のパラメータ(null)は重要ではありません。この例では使用されていません。
これらの例は同じ結果を得ます:
インスタンス
Math.max.apply(Math, [1,2,3]); // 3も返されます
インスタンス
Math.max.apply(" ", [1,2,3]); // 3も返されます
インスタンス
Math.max.apply(0, [1,2,3]); // 3も返されます
JavaScript 厳格モード
JavaScript で厳格モードでは、 apply()
メソッドの最初のパラメータがオブジェクトでない場合、それは呼び出される関数の所有者(オブジェクト)になります。"非厳格"モードでは、それはグローバルオブジェクトになります。
- 前のページ JS ファンクション Call
- 次のページ JS ファンクションバインディング