レッスンに戻る

メソッドとしてのバインド関数

重要度: 5

出力がどうなるでしょうか?

function f() {
  alert( this ); // ?
}

let user = {
  g: f.bind(null)
};

user.g();

正解: null.

function f() {
  alert( this ); // null
}

let user = {
  g: f.bind(null)
};

user.g();

バインドされた関数のコンテキストは厳密に固定されています。さらに変更することはできません。

そのため、user.g()を実行する場合でも、元々の関数はthis=nullで呼び出されます。