W literaturze spotkać można dwa określenia. Wzorzec modułu [źródło: Mocne strony JavaScript] oraz wzorzec fabryki [źródło: JavaScript dla Webmasterów]. Ja nie widzę zbyt wielkich różnic w samym kodzie, chodzi raczej o ideę, która przyświecała twórcy. We wzorcu modułu stworzyć coś na wzór przestrzeni nazw, komponent całego systemu. W fabryce po prostu funkcję zwracającą obiekt.

Chciałbym zatem tu pokazać kilka dobrych praktyk jakich warto używać przy tworzeniu obiektów z wykorzystaniem wzorca fabryki / modułu. Część z nich jest nieosiągalna w przypadku stosowania np. tworzenia obiektów z prototypu.
Continue reading

W językach obiektowych takich jak Java czy C++, gdzie obiekty tworzy się wykorzystując jako wzorzec klasę, bardzo ważną rzeczą staje się konstruktor. W JS na dobrą sprawdę konstruktor nie jest potrzebny. Można tworzyć obiekty, które nie posiadają jawnie  zadeklarowanego konstruktora (choćby przez literał obiektowy).

Jeśli jednak ktoś jest bardzo przywiązany do konstruktorów (jak choćby ja) może stworzyć konstuktor:

var MyObjConstr = function(a, b)
{
    this.func = function() { alert('My func1!'); }
    this.a = a;
    this.b = b;
};

var MyObj = new MyObjConstr(1, 'ala ma kota');
MyObj.func();
alert(MyObj.a);
MyObj.a = 10;
alert(MyObj.a);

Continue reading

Javascript posiada wiele sposobów na tworzenie obiektów. Jednym z nich jest wzorzec fabryki obiektów (czasem zwany wzorcem modułu). Chciałbym pokazać, jak można wykorzystując ten wzorzec stworzyć IMO wygodniejsze obiekty.

Kod prostego obiektu

var yPerson = function()
{
    var sName,
        nAge;

    function fName( name )
    {
        sName = name || sName;
        return sName;
    }

    function fAge( age )
    {
        nAge = age || nAge;
        return nAge;
    }

    return {
        name : fName,
        age  : fAge
    };
};

Continue reading

W Javascript nie ma klas, a mimo tego są obiekty (pojęcie “klasa” jest wprowadzane przez niektóre frameworki, np. Dojo Toolkit). Funkcje klas pełnią prototypy i można ich używać w taki sposób, aby wszystko wyglądało jak w tradycyjnym języku zorientowanym obiektowo. Istnieje także inny sposób tworzenia obiektów – z wykorzystaniem literałów obiektowych.

Na podstawie literałów obiektowych powstał także lekkie format wymiany danych – JSON (ang. JavaScript Object Notation – wym. jā’sən, jak imię “Jason”). polecam jako medium przesyłania danych między serwerem i klientem.

Continue reading

W JS zawsze istnieje kilka sposobów na osiągnięcie tego samego efektu. Nie inaczej jest z obiektami. Oczywiście każda z tych metod może jeszcze zostać zmodyfikowana, zapisana inaczej itp. itd.

Dlatego proszę nie traktować tej porady jako jedynej właściwie prawdy.

Zanim zaczniesz czytać kolejne porady z tej serii proponuję przeczytać:

Omówię zatem:

W kolejce czeka jeszcze kilka rozwiązań mieszanych. Jak kiedyś będę miał chwilę, to ta lista się wydłuży 🙂