diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/function/caller/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/function/caller/index.html | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/function/caller/index.html b/files/uk/web/javascript/reference/global_objects/function/caller/index.html deleted file mode 100644 index ab2fe55383..0000000000 --- a/files/uk/web/javascript/reference/global_objects/function/caller/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Function.caller -slug: Web/JavaScript/Reference/Global_Objects/Function/caller -tags: - - Function - - JavaScript - - Властивість -translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller ---- -<div>{{JSRef}} {{non-standard_header}}</div> - -<p>Властивість <code><strong><em>function</em>.caller</strong></code> повертає функцію, яка викликала вказану функцію. Ця властивість заборонена у строгому режимі.</p> - -<h2 id="Опис">Опис</h2> - -<p>Якщо функція <code>f</code> викликана кодом верхнього рівня, значенням <code>f.caller</code> буде {{jsxref("null")}}, інакше це буде функція, яка викликала <code>f</code>.</p> - -<p>Ця властивість замінює застарілу властивість {{jsxref("Functions/arguments/caller", "arguments.caller")}} об'єкта {{jsxref("Functions/arguments", "arguments")}}.</p> - -<p>Спеціальна властивість <code>__caller__</code>, яка повертала об'єкт активації функції, що викликала задану функцію, дозволяючи відбудовувати стек викликів, була прибрана з міркувань безпеки.</p> - -<h3 id="Примітки">Примітки</h3> - -<p>Зауважте, що у випадку рекурсії ви не зможете відбудувати стек викликів за допомогою цієї властивості. Розглянемо:</p> - -<pre class="brush: js">function f(n) { g(n - 1); } -function g(n) { if (n > 0) { f(n); } else { stop(); } } -f(2); -</pre> - -<p>У момент, коли викликається <code>stop()</code>, стек викликів буде таким:</p> - -<pre class="brush: js">f(2) -> g(1) -> f(1) -> g(0) -> stop() -</pre> - -<p>Наступне дорівнює true:</p> - -<pre class="brush: js">stop.caller === g && f.caller === g && g.caller === f -</pre> - -<p>Отже, якщо ви спробуєте отримати стек викликів у функції <code>stop()</code> ось так:</p> - -<pre class="brush: js">var f = stop; -var stack = 'Стек викликів:'; -while (f) { - stack += '\n' + f.name; - f = f.caller; -} -</pre> - -<p>цикл ніколи не зупиниться.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Перевірка_значення_властивості_функції_caller">Перевірка значення властивості функції <code>caller</code></h3> - -<p>Наступний код перевіряє значення властивості функції <code>caller</code>.</p> - -<pre class="brush: js">function myFunc() { - if (myFunc.caller == null) { - return 'Ця функція викликана з верхнього рівня!'; - } else { - return 'Ця функція викликана ' + myFunc.caller; - } -} -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<p>Не є частиною жодних специфікацій. Реалізовано у JavaScript 1.5.</p> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Function.caller")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>Помилка реалізації для SpiderMonkey {{bug(65683)}}</li> -</ul> |