Blog webdeveloperski Patryk yarpo Jar

Rozszerzanie typu obiektu

Autor wiadomości Styczeń 19, 2011

W poradzie dotyczącej dodawania nowych metod do istniejących obiektów wspomniałem, że da się dodawać metody do wszystkich obiektów - nie tylko do tego jednego wybranego.

Przykładowy kod

String.prototype.letterSpacing = function()
{
    var n = this.length;
    var str_result = '';
    for(var i=0; i < n; i++)
    {
        str_result += this.charAt(i) + ' ';
    }
    return str_result;
}

W powyższym kodzie dodaliśmy nową metodą do wszystkich obiektów tworzonych według prototypu obiektu String. Dzięki temu, każdy obiekt String będzie posiadał tę metodę:

var oNapis1 = new String("Mój pierwszy napis");
var oNapis2 = new String("Kolejny tekst");

alert(oNapis1.letterSpacing());
alert(oNapis2.letterSpacing());

Gdyby teraz do jednemu z tyhc obiektów nadpisać metodę `letterSpacing':

oNapis1.letterSpacing = function()
{
    return this.toLowerCase(); // zwraca wszystko małymi literami
}
alert(oNapis1.letterSpacing());alert(oNapis2.letterSpacing());

Pierwszy alert da w wyniku to, co zakodowaliśmy w definicji `letterSpacing' przypisanej do prototypu obiektu String. Drugi alert wyświetli wynik działania metody nadpisanej (czyli toLowerCase()).

Zrozumienie tego początkowo nie jest łatwe, ale można się w końcu przyzwyczaić.

Komentarze (0) Trackbacks (0)

Brak komentarzy.


Leave a comment

 

Brak trackbacków.