Różne sposoby konkatenacji ciągów znaków Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
piątek, 25 września 2009 23:16

Jest kilka sposobów na łączenie cięgów znaków. W tym artykule opiszę 3.

 

Sposób I - "optymistyczny"

Optymistyczny dlatego, że używa się samych plusów.

var string_1 = 'Ala ma ';
var string_2 = 'kota';
alert(string_1 + string_2);

Korzystając z tej metody pamiętaj o różnych niespodziankach związanych z wykorzystywaniem operatora `+', który jest też wykorzystywany do dodawania liczb.

 

Sposób II - obiektowy

Wykorzystamy tu wbudowaną metodę obiektu String.

var string_1 = 'Ala ma ';
string_1.concat('kota');
alert(string_1);

Metoda ta, na pierwszy rzut oka wydaje się mniej intuicyjna. Z moich testów wynika, że także nie musi (a w przypadku IE zdecydowanie nie jest) być najbardziej wydajna. Choć to dziwne.

 

Sposób III - własny

Stwórzmy szybko prosty obiekt YString (wielka litera z przodu nie przez przypadek - konwencja. Obiekty wymagające operatora new staraj się nazywać wielką literą. Obiekty, które nie wymagają new, małą literą):

var YString = function (sep) {
    this.__strings__ = [];
    this.separator = sep || "" ;
}
 
YString.prototype.append = function(str) {
    this.__strings__.push(str);
    return this;
};
 
YString.prototype.toString = function() {
    return this.__strings__.join(this.separator);
};

 

I przykład zastosowania takiego kodu:

 

var oString = new YString(" ");
oString.append("Ala ma").append("kota");
alert(oString.toString());

 

Dodatkową ciekawostką jest zastosowanie tu wzorca łańcuchowego (jak np. w jQuery). Po wywołaniu metody append(), możemy po kropce wywołać kolejną metodę tego obiektu, będzie ona działać a tej samej instancji obiektu, ponieważ w metodzie append() zawsze zwracamy referencję obiektu, na którym pracujemy.