Każdy obiekt w JS [niezależnie od tego w jaki sposób stworzony] może być rozszerzany. W tym artykule pokażę, jak rozszerzać istniejący obiekt JavaScript.
Stwórzmy sobie obiekt [String]:
var txt = new String('To jest mój napis');Obiekt ten posiada kilka metod (funkcji), choćby:
alert(txt.toLowerCase()); // małymi literamiDodajmy do niego dodatkową metodę:
txt.letterSpacing = function() { var n = this.length; var str_result = ''; for ( var i = 0; i < n; i++) { str_result += this.charAt(i) + ' '; } return str_result; }Oraz jej wywołanie:
alert(txt.letterSpacing());Zauważ, że jeśli zaraz za tym wyświetlisz ponownie
alert(txt);Nadal litery są razem. Dzieje się tak dlatego, że nie zmienialiśmy `this’, a jedynie przypisywaliśmy wszystko do `str_result’ a potem to zwróciliśmy.
Wartym zauważenia jest też to, że jeśli dodasz teraz nowy obiekt String, to nie posiada on tej metody:
var nowy_txt = new String('Poszła baba na targ'); alert(nowy_txt.letterSpacing());Taki kod wywoła błąd:
Błąd: nowy_txt.letterSpacing is not a functionDlaczego? Dodaliśmy tę metodę dokładnie do tego jednego obiektu, nie do wszystkich obiektów String. To tak jakbyśmy nauczyli czegoś jednego człowieka. Nie możemy później wymagać, aby każdy to potrafił.
Jest jednak i na to sposób, choć o tym w innym artykule.
Warto przeczytać