Archiwum

Archive for Maj 2011

Proxy w JavaScript

25/05/2011 Dodaj komentarz

Trafiłem ostatnio na ciekawe użycie Proxy w JavaScript. Wcześniej nie myślałem że można tak robić. Pisałem (pisze ciągle) bardziej w skryptowy (proceduralny) sposób w tym języku. Jednak JavaScript jest bardziej elegancki w wyrażaniu intencji jakie kryją się za pojęciem proxy.
A więc w kodzie wygląda to tak, prosta funkcja i następna która tworzy proxy do pierwszej:

function executeAlert(){
  alert('powiedz w alert');
} 

function decorateExecuteAlert(){
  var oldExecuteAlert = executeAlert;
  executeAlert = function() {
    alert('przed alert');
    oldExecuteAlert();
  };
} 

Albo jeszcze lepiej można zmienić samego alerta:

function changeAlert(){
  var oldAlert = alert;
  alert = function(value) {
    oldAlert('>'+value+'<');
  };
} 

Jak już zasugerowałem to nazwą drugiej funkcji, jest to też rodzaj dekoratora. Ogólnie taka konstrukcja oferuje duże możliwości. Ja na nią trafiłem idąc za potrzebą stworzenia obserwatora zdarzeń wywołania danej funkcji. Dzięki temu można czasowo dodać (podpiąć się) coś do danej funkcji, a potem usunąć to. Można też zmodyfikować działanie i dodać warunek kiedy właściwa funkcja ma się wykonywać, lub podpiąć dodatkowe logowanie do wywołań jej. Możliwości jest wiele :).

Kategorie:Inne Tagi: