JavaScript関数呼び出し
メソッドの再利用
このcall()
メソッドを使用すると、さまざまなオブジェクトで使用できるメソッドを作成できます。
すべての関数はメソッドです
JavaScriptでは、すべての関数はオブジェクトメソッドです。
関数がJavaScriptオブジェクトのメソッドでない場合、それはグローバルオブジェクトの関数です(前の章を参照)。
次の例では、firstName、lastName、fullNameの3つのプロパティを持つオブジェクトを作成します。
例
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
このキーワード_
関数定義では、関数this
の「所有者」を指します。
上記の例でthis
は、 fullName関数を「所有する」
personオブジェクトです。
つまり、this.firstNameは、このオブジェクトのfirstName プロパティを意味します。
JS thisKeywordthis
でキーワードの詳細をお読みください。
JavaScriptのcall()メソッド
このcall()
メソッドは、事前定義されたJavaScriptメソッドです。
引数(パラメーター)として所有者オブジェクトを使用してメソッドを呼び出す(呼び出す)ために使用できます。
を使用call()
すると、オブジェクトは別のオブジェクトに属するメソッドを使用できます。
この例では、person1で使用してpersonのfullNameメソッドを 呼び出します。
例
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "John Doe":
person.fullName.call(person1);
この例では、person2で使用してpersonのfullNameメソッドを 呼び出します。
例
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "Mary Doe"
person.fullName.call(person2);
引数付きのcall()メソッド
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");