To tłumaczenie jest niekompletne. Pomóż przetłumaczyć ten artykuł z języka angielskiego.
Niestandardowy
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.
Podsumowanie
Określa funkcję, która powołuje się na aktualnie wykonywaną funkcje.
Opis
Jeśli funkcja f
została wywołana przez kod najwyższego poziomu, własność f.caller
ma wartość null
, w przeciwnym przypadku jest to funkcja, która wywołała f
.
Ta własność zastąpiła wycofaną własność arguments.caller
.
Notes
Note that in case of recursion, you can't reconstruct the call stack using this property. Consider:
function f(n) { g(n-1); } function g(n) { if(n>0) { f(n); } else { stop(); } } f(2);
At the moment stop()
is called the call stack will be:
f(2) -> g(1) -> f(1) -> g(0) -> stop()
The following is true:
stop.caller === g && f.caller === g && g.caller === f
so if you tried to get the stack trace in the stop()
function like this:
var f = stop; var stack = "Stack trace:"; while (f) { stack += "\n" + f.name; f = f.caller; }
the loop would never stop.
Przykłady
Przykład: Sprawdzenie wartości własności funkcji caller
Następujący kod sprawdza wartość własności funkcji caller
.
function myFunc() { if (myFunc.caller == null) { return ("The function was called from the top!"); } else { return ("This function's caller was " + myFunc.caller); } }