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