Dopisywanie własnych metod do obiektów Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
wtorek, 22 września 2009 18:04

W poradzie dotyczącej dodawania nowych metod do istniejących obiektów wspomniałęm, ż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ć.