レッスンに戻る

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

重要性: 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 で呼ばれます。