Loading:


JavaScript Funckja caller

Określa funkcję, która powołuje się na aktualnie wykonywaną funkcje.


Ta własność nie jest częścią standardu ECMA-262 edycja 3. Zaimplementowana w najmniejszym stopniu jest w SpiderMonkey (JavaScriptowy silnik użyty w Mozilli) (zobacz błąd 65683) i JScript.


Własność obiektu: Function

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.


Notacja



Zauważ, że w przypadku rekonstrukcji, nie możesz zrekonstrułować właściwości




Rozważmy:


function f(n) { g(n-1) }
function g(n) { if(n>0) f(n); else stop() }
f(2)




w tym momencie stop() nazywa sie stosem wywołania:


f(2) -> g(1) -> f(1) -> g(0) -> stop()


Ponieższe stwierdzenie jest prawdą:


stop.caller === g && f.caller === g && g.caller === f


jeśli sprubujesz uzyskać ślad stosu w funkcji stop() będzie ona taka jak:

var f = stop;
var stack = "Stack trace:";
while (f) {
stack += "\n" + f.name;
f = f.caller;
}



pętla nigdy sie nie zatrzyma.


The special property __caller__, which returned the activation object of the caller thus allowing to reconstruct the stack, was removed for security reasons.

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);
}

 



Napisz Artyku³

Listing

niema




Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors