W skrypcie mam pełno odwołań do jednej funkcji na stringach
Dla zobrazowania zagęszczenia tego powiedzmy że skrypt wygląda mniej więcej tak:
funkcja('string');
alert(funkcja('string2'));
obiekt.a = funkcja('dane');
obiekt.b = funkcja('dane2');
function test()
{
alert(funkcja('ok'));
}
function zapisz()
{
obiekt.a = funkcja('foo');
obiekt.b = obiekt.c ? funkcja('bar') : funkcja('foobar');
}
funkcję tę wykonuję na KAŻDYM stringu - dlatego też myślałem żeby to uładnić
mógłbym stworzyć prototyp z funkcją "funkcja" i wtedy wyglądałoby to tak:
'string'.funkcja();
alert('string2'.funkcja());
obiekt.a = 'dane'.funkcja();
obiekt.b = 'dane2'.funkcja();
function test()
{
alert('ok'.funkcja());
}
function zapisz()
{
obiekt.a = 'foo'.funkcja();
obiekt.b = obiekt.c ? 'bar'.funkcja() : 'foobar'.funkcja();
}
jak dla mnie trochę czytelniejsze i ładniejsze bo mniej jest zagęszczonych nawiasów
zmiana nazwy funkcji na krótszą, powiedzmy "f" nie wchodzi w grę bo niepotrzebnie wizualnie komplikuje kod, a na jego prostocie dla użytkownika końcowego zależy mi najbardziej
najfajniej by było gdyby dało się wykonać funkcję po prostu dla każdego stringa
można nadpisać funkcję .toString()
ale wywoływana jest ona tylko kiedy string jest obiektem a nie typem prostym, czyli musiałbym dawać wszędzie:
new String('przykład')
ale można za to wykorzystać składnię do tworzenia wyrażeń regularnych
/regExp/
nadpisując RegExp.prototype.toString można skrypt sprowadzić do postaci:
/string/;
alert(/string2/);
obiekt.a = /dane/;
obiekt.b = /dane2/;
function test()
{
alert(/ok/);
}
function zapisz()
{
obiekt.a = /foo/;
obiekt.b = obiekt.c ? /bar/ : /foobar/;
}
i wszystko działa i jest jak dla mnie fajnie
ale chciałbym spytać co Wy o tym sądzicie? Czy jest jakiś konkretny powód dla którego w żadnym wypadku nie powinienem tak robić?