jesteś tutaj
501
Funkcje anonimowe, zasięg i domknięcia
Jak używać funkcji anonimowych?
A zatem chcemy utworzyć funkcję do obsługi zdarzeń
load
, wiemy jednak, że jest to „funkcja
jednorazowa”, gdyż zdarzenie to jest generowane tylko jeden raz podczas całego okresu prezentacji
strony w przeglądarce. Możemy także zauważyć, że we właściwości
window.onload
jest zapisywana
referencja do funkcji — a konkretnie rzecz biorąc, referencja do funkcji
handler
. Ponieważ
jednak funkcja ta jest przeznaczona tylko do jednokrotnego użycia, zatem określanie jej nazwy jest
niepotrzebne, gdyż używamy jej jedynie po to, by zapisać referencję we właściwości
window.onload
.
Zastosowanie funkcji anonimowej umożliwia oczyszczenie naszego kodu. Funkcja anonimowa jest
po prostu wyrażeniem funkcyjnym, pozbawionym nazwy i zapisanym w miejscu, w którym normalnie
użylibyśmy referencji do funkcji. Aby jednak to wszystko ze sobą powiązać, przeanalizujemy przykład
wykorzystania wyrażenia funkcyjnego w sposób anonimowy.
window.onload = function() { alert(”O tak, strona zostaïa wczytana!”); }
Teraz procedura
obsługi została
przypisana
bezpośrednio
właściwości
window.onload,
bez konieczności
stosowania
niepotrzebnej nazwy.
Teraz kod jest znacznie bardziej zwarty.
Niezbędną funkcję przypisujemy bezpośrednio
właściwości onload. Oprócz tego, nie tworzymy
nazwy funkcji, która przypadkowo mogłaby
zostać użyta w
innym miejscu kodu (w końcu
nazwa „handler” jest stosowana dosyć często!).
function handler() { alert(”O tak, strona zostaïa wczytana!”); }
window.onload = handler
;
Najpierw usuwamy zmienną
handler, tworząc tym samym
wyrażenie funkcyjne.
function () { alert(”O tak, strona zostaïa wczytana!”); }
window.onload = ;
Następnie przypisujemy je
bezpośrednio właściwości
window.onload.
Rany, popatrz!
Nie ma nazwy!
WYSIL
SZARE KOMÓRKI
Czy w którymś z przykładów przedstawionych wcześniej w tej książce były używane funkcje anonimowe,
choć nie uprzedzaliśmy o tym?
Podpowiedź: może ukrywają się gdzieś w Twoich obiektach?
502
Rozdział 11 .
Ćwiczenia z funkcji anonimowych
Przedstawiony poniżej fragment kodu zapewnia kilka możliwości zastosowania funkcji
anonimowych. Skorzystaj z nich i użyj funkcji anonimowych wszędzie tam, gdzie to możliwe.
Możesz przekreślić stary kod i obok napisać nowy. I jeszcze jedna rzecz: zakreśl wszystkie
anonimowe funkcje, które już są używane.
Zaostrz ołówek
window.onload = init;
var cookies = {
instructions: ”WstÚpne rozgrzewanie do 175 stopni...”,
bake: function(time) {
console.log(”Wypiekam ciasteczka.”);
setTimeout(done, time);
}
};
function init() {
var button = document.getElementById(”bake”);
button.onclick = handleButton;
}
function handleButton() {
console.log(”-uĝ moĝna wypiekaÊ ciasteczka.”);
cookies.bake(2500);
}
function done() {
alert(”Ciasteczka sÈ gotowe, wyciÈgnij je, by przestygïy.”);
console.log(”Chïodzenie ciasteczek.”);
var cool = function() {
alert(”Ciasteczka sÈ juĝ zimne, moĝna je jeĂÊ!”);
};
setTimeout(cool, 1000);
}

Get Programowanie w JavaScript Rusz głową! now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.