レッスンに戻る

2つの bind

重要性: 5

追加のバインディングで this を変更することができるでしょうか?

何が出力されるでしょう?

function f() {
  alert(this.name);
}

f = f.bind( {name: "John"} ).bind( {name: "Ann" } );

f();

解答: John.

function f() {
  alert(this.name);
}

f = f.bind( {name: "John"} ).bind( {name: "Pete"} );

f(); // John

f.bind(...) によって返却された バインドされた関数 オブジェクトは作成時にのみコンテキスト(と提供されていれば引数を)を覚えます。

関数を再バインドすることはできません。