Autor Zpráva
kahi
Profil
Ahoj,
nedaří se mi v JS/jQ definovat funkci tak, abych ji mohl volat způsobem:

my_string.myFunction();


Z jQ jsem zvyklý definovat funkce

$.fn.myFunction = function () {}


ale taková funkce bohužel funguje jen aplikovaná na jQ objekt. Potřeboval bych totéž aplikovat na string. Závorková syntaxe (myFunction(my_string)) se mi nelíbí...

Díky za radu. Omlouvám se, že kladu takové hloupé otázky. Asi bych si měl koupit nějakou příručku :-).
srigi
Profil
Ak sa nemylim, tak co sa stringu tyka, ak kces pridat novu metodu, budes musiet rozsirit jeho prototyp (JS je prototypovy jazyk). Vo vseobecnosti sa toto ale nepovazuje za dobry napad.
Chamurappi
Profil
Reaguji na srigiho:
Vo vseobecnosti sa toto ale nepovazuje za dobry napad.
Není pravda. Špatný nápad je to jen u třídy Object, u ostatních vestavěných objektů se podobné rozšiřování v rozumné míře užívá.


Reaguji na kahiho:
Chceš-li přidat metodu ke všem řetězcům, musíš použít prototyp, tedy:
String.prototype.myFunction = function()
{
  // …
};
Chceš-li ji přidat jen k jednomu, stačí ji přiřadit do my_string.myFunction.
kahi
Profil
Chamurappi

Díky, skvělé!

Potřebuji totiž definovat funkci obdobnou "replace" a implementovat ji klasicky mi přijde (na používání) dost neintuitivní.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: