JavaScriptの関数Apply

リユース

方法を通じて apply() 方法を使用して、異なるオブジェクトに適用するメソッドを書きかけます。

JavaScript apply() メソッド

apply() 方法と call() 方法は非常に似ています:

この例では、personfullName 方法が適用から 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() メソッドの最初のパラメータがオブジェクトでない場合、それは呼び出される関数の所有者(オブジェクト)になります。"非厳格"モードでは、それはグローバルオブジェクトになります。