Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
Не стандартно: Эта функция не стандартизирована. Мы не рекомендуем использовать нестандартные функции в действующих проектах, так как их поддержка браузерами ограничена, а поведение может измениться или быть удалено. Тем не менее, в некоторых случаях, когда нет стандартного решения, они могут быть подходящей альтернативой.
Свойство function.caller возвращает функцию, которая вызвала указанную функцию.
Если функция f была вызвана из кода самого верхнего уровня, значение f.caller будет равно null, в противном случае значение будет равно функции, вызвавшей f.
Это свойство пришло на замену удалённого свойства arguments.caller объекта arguments.
Специальное свойство __caller__, возвращающее объект активации вызывающей функции и, таким образом, позволяющее восстанавливать стек вызовов, было удалено по соображениям безопасности.
Обратите внимание, что в случае рекурсии, вы не сможете воссоздать стек вызовов, используя это свойство. Пусть у нас есть функции:
В момент вызова функции stop(), стек вызовов имеет следующий вид:
f(2) -> g(2) -> f(2) -> g(1) -> f(1) -> g(0) -> stop()Следующее условие верно:
stop.caller === g && f.caller === g && g.caller === fтак что если вы попытаетесь оттрассировать стек в функции stop() подобным образом:
то этот цикл никогда не остановится.
Следующий код проверяет значение свойства caller функции.
Не является частью какой-либо спецификации. Реализована в JavaScript 1.5.
Enable JavaScript to view this browser compatibility table.
This page was last modified on 20 янв. 2024 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.