Przewodnik po języku JavaScript 1.5:Obiekty predefiniowane:Obiekt function
z Mozilla Developer Center, polskiego centrum programistów Mozilli.
[edytuj] Obiekt Function
Predefiniowany obiekt Function określa łańcuch znaków do skompilowania jako funkcja.
Aby utworzyć obiekt Function:
nazwaObiektuFunkcji = new Function ([arg1, arg2, ... argn], cialoFunkcji)
nazwaObiektuFunkcji jest nazwą zmiennej lub własności istniejącego obiektu. Może to być również obiekt, po którym następuje zapisana małymi literami nazwa uchwytu zdarzenia, jak np. window.onerror.
arg1, arg2, ... argn są argumentami, które mają być użyte przez funkcję jako formalne nazwy argumentów. Każda z nich musi być łańcuchem znaków spełniającym zasady poprawnego identyfikatora JavaScript; przykładowo "x" lub "theForm".
cialoFunkcji jest łańcuchem znaków określającym kod JavaScript, który ma zostać skompilowany jako ciało funkcji.
Obiekty Function są przetwarzane przy każdym użyciu. Jest to mniej skutecznie niż deklarowanie funkcji i wywoływanie jej wewnątrz kodu, ponieważ zadeklarowane funkcje są kompilowane.
Oprócz definiowania funkcji w sposób opisany tutaj, możesz również użyć instrukcji function i wyrażenia funkcji. Zobacz Dokumentacja języka JavaScript 1.5, aby uzyskać więcej informacji.
Poniższy kod przypisuje funkcję do zmiennej ustawKolorTla. Funkcja ta ustawia obecny kolor tła dokumentu.
var ustawKolorTla = new Function("document.bgColor='antiquewhite'")
Aby wywołać obiekt Function, możesz określić nazwę zmiennej tak, jak gdyby była to funkcja. Poniższy kod wykonuje funkcję określoną przez zmienną ustawKolorTla:
var wyborKoloru="antiquewhite"
if (wyborKoloru=="antiquewhite") {ustawKolorTla()}
Możesz przypisać funkcję do uchwytu zdarzenia w jeden z następujących sposobów:
1. document.form1.colorButton.onclick=ustawKolorTla
2. <INPUT NAME="kolorPrzycisku" TYPE="button"
VALUE="Zmień kolor tła"
onClick="ustawKolorTla()">
Tworzenie zmiennej ustawKolorTla pokazane powyżej jest podobne do deklarowania następującej funkcji:
function ustawKolorTla() {
document.bgColor='antiquewhite'
}
Przypisywanie funkcji do zmiennej jest podobne do deklarowania funkcji, są jednak pewne różnice:
- Gdy przypisujesz funkcję do zmiennej używając var
ustawKolorTla = new Function("..."),ustawKolorTlajest zmienną, dla której obecnej wartość jest odniesieniem do funkcji stworzonej za pomocą newFunction(). - Gdy tworzysz funkcję używając
function ustawKolorTla() {...},ustawKolorTlanie jest zmienną, ale nazwą funkcji.
Możesz zagnieździć funkcję wewnątrz funkcji. Zagnieżdżona (wewnętrzna) funkcja jest prywatna do zawierającej ją (zewnętrznej) funkcji:
- Dostęp do wewnętrznej funkcji może być osiągnięty tylko przez instrukcje w funkcji zewnętrznej.
- Funkcja wewnętrzna może używać tych samych argumentów i zmiennych, co funkcja zewnątrzna. Funkcja zewnętrzna nie może używać argumentów i zmiennych funkcji wewnętrznej.