bind를 적용한 함수를 메서드에 정의하기
중요도: 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
(
)
;
bind를 적용한 함수의 컨텍스트는 완전히 고정됩니다. 한번 고정되면 바꿀 방법이 없습니다.
따라서 user.g()
를 실행했음에도 불구하고 기존 함수의 컨텍스트는 null
이 되기 때문에 null
이 출력됩니다.