JavaScript ファンクションの Call

メソッドの再利用

使用 call() メソッドで、異なるオブジェクト上で使用できるメソッドを書くことができます。

関数はオブジェクトのメソッド

JavaScriptでは、関数はオブジェクトのメソッドです。

関数がJavaScriptオブジェクトのメソッドでない場合、それはグローバルオブジェクトの関数です(前章を参照)。

以下の例では、3つの属性を持つオブジェクトを作成します(firstNamelastNamefullName)。

インスタンス

var person = {
    firstName:"Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
person.fullName();		// 「Bill Gates」として返されます"

自分で試してみる

fullName属性は、メソッド。personオブジェクトは、このメソッドの所有者

fullName属性は、 personオブジェクトのメソッド

JavaScript call() メソッド

call() メソッドは、事前に定義されたJavaScriptメソッドです。

これは、所有者オブジェクトとしての引数でメソッドを呼び出すために使用できます。

通じて call()他のオブジェクトのメソッドを使用することもできます。

この例では、personのfullNameメソッドを呼び出し、person1に使用します:

インスタンス

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person1);  // 「Bill Gates」として返されます"

自分で試してみる

この例では、personのfullNameメソッドを呼び出し、person2に使用します:

インスタンス

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person2);  // 返却値は "Steve Jobs" になります

自分で試してみる

引数付きの call() メソッド

call() メソッドは以下の引数を受け入れます:

インスタンス

var person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}
var person1 = {
  firstName:"Bill",
  lastName: "Gates"
}
person.fullName.call(person1, "Seattle", "USA");

自分で試してみる