JavaScript nie stoi w miejscu. Cały czas trwają prace nad różnymi API wchodzącymi w skład HTML 5, jak również nad rdzeniem języka – ECMAScript.

Dziś coś o nowości z ECMAScript 5 metodzie `Object.create’ pozwalającej na wygodne tworzenie obiektów. Przedstawiłem już wiele sposobów na tworzenie obiektów w JavaScript. Większość z nich była jednak mniej lub bardziej naginaniem podstawowych mechanizmów języka,aby przybliżyć jego działanie do oczekiwań programistów Java-pochodnych (pamiętajmy, nawet potocznie Java != JavaScript).

Continue reading

O literale obiektowym  kilka razy pisałem już. Tym razem napiszę o przewadze literału nad konstruktorami `Array’ oraz` Object’.

W JS można stworzyć obiekt na dwa sposoby:

Sposób I

var o = new Object();

Sposób II

var o = {};

Zaletą pierwsze sposobu jest czytelność. Każdy, nawet nie znając JS programista będzie wiedział, że `new Object()’ stworzy nowy obiekt… No chyba, że nie, zobaczmy taki przykład:

function example() { alert(1); }
example();
example = function() { alert(2); }
example();

Continue reading

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 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 🙂

Jest wiele sposobów na tworzenie obiektów w JS. Każdy ma jakieś wady i zalety. Należy wybrać taki, który nam się najbardziej podoba, i który akurat przy konkretnym zastosowaniu jest najwygodniejszy. W tym artykule pokażę, jak tworzyć w JS obiekty z wykorzystaniem mechanizmu prototypowania.

Język obiektowy bez klas

No tak! Ledwo zacząłeś widzieć korzyści płynące z tworzenia klas i operowaniu na obiektach, a tu Ci ktoś mówi, że nie ma klas w JS:). Ano nie ma. Są za to prototypy. I tak naprawdę to zasada jest bardzo podobna. Zobaczmy kod, bo tak zawsze łatwiej:

Continue reading