雰囲気だけ理解するjavascriptのapply

applyの意味

英語としての意味

そもそもapplyというのは、「当てる,塗る,つける」という意味。
だから、

functionA.apply(functionB);

という構文は
「functionAをfunctionBに付ける」という意味になる。
逆に言うと「functionBにfunctionAを付け加える」

javascriptとしての意味

javascriptでは、上の構文は、
「functionBにfunctionAを付け加え」て、その上で「実行する」という意味になる。

用例
function funcA() {
    this.valA = 1;
    alert("in funcA valB = " + this.valB);
}
function funcB() {
    this.valB = 3;
    funcA.apply(this);
}

var hoge = new funcB();
alert("hoge.valA = " + hoge.valA); 

上記のコードを実行すると、以下のような動作になる。

  1. アラート表示"in funcA valB = 3"
  2. アラート表示"hoge.valA = = 1"

これは、

  1. funcAの処理はfuncBのコンテキストの上で実行されている
  2. funcBはfuncAのコンテキストを包含している

という二つのことを示している。