Связанная функция как метод
важность: 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
.
Однако, функции g
совершенно без разницы, какой this
она получила.
Её единственное предназначение – это передать вызов в f
вместе с аргументами и ранее указанным контекстом null
, что она и делает.
Таким образом, когда мы запускаем user.g()
, исходная функция вызывается с this=null
.