Контекст (т. Е. this
значение) объекта определяется во время выполнения функции, не во время ее определения.Передача randomObject.callBack
другой функции не отправляет контекст (бит randomObject
);он просто отправляет функцию.
Предположительно, контекст устанавливается, когда myFunction
вызывает ее.Поскольку вы явно не предоставляете контекст (например, с call
или apply
), контекстом будет объект window
.
Вы можете изменить это, явно указав, что такое контекст функциидолжно быть до его запуска.Вы можете сделать это с помощью метода bind
:
myObject.myFunction(randomObject.callBack.bind(randomObject))
Теперь при вызове callback
внутри myFunction
будет зарегистрировано randomObject
.
Обратите внимание, что bind
является относительно новым;не все браузеры поддерживают это.На странице MDN, на которую я ссылался выше, есть немного кода, который будет работать во всех браузерах.