さぁ!検索しよう!

apply,call

applyとcallは、関数内のthisが指すオブジェクトを強制的に設定できるというものです。

ですので、applyかcallによって呼び出された関数は、別のオブジェクト内のプロパティやメソッドを使うことができます。

使い方は下記の通りです。

使い方

第一引数 第二引数
apply 呼び出した関数内のthisが指すオブジェクトを指定する。 呼び出した関数の引数に渡す値を配列として渡す。
call applyと同じ 呼び出した関数の引数に渡す値を一つずつカンマで区切って渡す。

主な使用例は下記の通りです。

使用例

function foo() {
  this.value = 7;
  this.total = function(arg1,arg2){
    console.log(this.value+arg1+arg2);
  }
}

function hoge() {
	this.value = 2;
}
var obj1 = new foo();
var obj2 = new hoge();
obj1.total(1);//8
obj1.total.apply(obj2,[3,4]);//9
obj1.total.call(obj2,3,4);//9

applyとcallはオブジェクトを呼ぶことはできず、あくまで関数のみです。

applyとcallの利点は下記の通りです。

利点

  • 継承が行える。
  • 他のオブジェクトのメソッドやプロパティを切り離して使える。
  • インスタンス化をしなくて済む。
  • グローバル汚染を防ぐことができる。

参考文献