メソッドとしてのバインドされた関数
重要性: 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
で呼ばれます。