Autor | Zpráva | ||
---|---|---|---|
joshua Profil * |
zdravim, nevíte, jaký je rozdíl mezi new RegExp a RegExp? dík...
Moderátor Chamurappi: Titulek „RegExp“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
|
||
Joker Profil |
#2 · Zasláno: 16. 9. 2009, 17:23:11
RegExp je název třídy a new RegExp je konstruktor?
|
||
joshua Profil * |
#3 · Zasláno: 16. 9. 2009, 17:32:29
To je sice hezká poučka, ale vysvětli mi to prosím jako pro blbce, tedy pro mě. Konstruktor, třída, to mi nic neříká. Jaký dopad to bude mít v programování, co se stane, když v regulárních výrazech smažu to new? Skazím tím něco? Dík moc krát...
|
||
Kajman_ Profil * |
#4 · Zasláno: 16. 9. 2009, 17:54:14
co se stane, když v regulárních výrazech smažu to new?
Pokazí se to. |
||
peta Profil |
joshua
Tak jo, pro tebe :) var x = function () {alert(ahoj);} x(); x = function () {alert(ahoj);} x(); function x() {alert(ahoj);} x(); x = 5; x = alert; x('123'); x = Math.sin; alert(x(45*Math.PI/180)); function x() { this.neco = 5; this.sin = function(uhel) {return Math.sin(uhel*Math.PI/180);} } y = x; alert(y); x.neco = 10; alert(y.neco); // to by melo dat myslim 10, nedelas klon objektu, jen rozmnozujes moznost jeho volani do promenne y y = new x; x.neco = 15; alert(y.neco); // to by melo dat myslim 10, protoze v Y je uplne novy objekt x = RegExp // pak znamena, ze misto RegExp muzes pouzivat nyni i X y = new x('a','g'); str = 'aaa'; str = str.replace(y,'b'); alert(str); Moderátor Chamurappi: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
Joker Profil |
#6 · Zasláno: 17. 9. 2009, 10:32:02 · Upravil/a: Joker
peta:
Gratuluju, v tomhle "vysvětlení jako pro blbce" jsem se zamotal i já :) joshua: „To je sice hezká poučka, ale vysvětli mi to prosím jako pro blbce, tedy pro mě. Konstruktor, třída, to mi nic neříká.“ Fajn: To je podobný rozdíl, jako třeba "auto" a "moje auto"*. Auto je obecné jméno pro všechna existující auta- to je třída. Moje auto je jedno konkrétní auto- tomu se říká instance. Pokud se chci přepravit z místa na místo, nestačí mi třída (tj. řekněme "myšlenkový koncept auta"), ale potřebuju instanci (nějaké konkrétní auto). Tak a teď zpátky k programování: RegExp je třída. Když chci pracovat s nějakým konkrétním regulárním výrazem, potřebuju instanci třídy RegExp. Instance třídy se v Javascriptu vytvoří zápisem new Třída. Tedy: var r = new RegExp(); vytvoří novou instanci třídy RegExp a přiřadí do proměnné r. *poznámka: Termín "moje auto" v tom příkladu znamená to jedno konkrétní, které bylo moje ve chvíli psaní příspěvku. Nechtěl jsem se zamotávat do popisu aut :) |
||
Chamurappi Profil |
#7 · Zasláno: 17. 9. 2009, 11:43:46
Reaguji na joshuu:
„co se stane, když v regulárních výrazech smažu to new?“ Nejspíš nic. Stejně jako u Stringu, protože obě tyto třídy počítají s tím, že mohou být použité jako funkce. Ale u jiných tříd to tak většinou fungovat nebude. |
||
DoubleThink Profil * |
#8 · Zasláno: 17. 9. 2009, 16:20:43
„Auto je obecné jméno pro všechna existující auta- to je třída“
Možná bych tomu říkal radši prototyp, třídy JS tuším nemá - možná předlohy pro kompilaci objektů v Chromu by mohly být považovány za třídy. Ale možná kecám, protože mám zkušenost až s druhou nejpoužívanější variantou ECMAScriptu. |
||
_es Profil |
#9 · Zasláno: 17. 9. 2009, 20:37:58 · Upravil/a: _es
peta
Napriek tomu, že som to celé prečítal, tak tam odpoveď na prvú otázku nikde nevidím. Okrem toho tam máš nejaké nezmysly. „Moderátor Chamurappi: Vkládej prosím kódy mezi značky pre a /pre“ Pre tohoto člena nemá táto výzva zmysel. Budeš to tam musieť vkladať zaňho. (lebo je to pre neho nepovinné) Joker „RegExp je název třídy a new RegExp je konstruktor?“ RegExp je funkcia a new RegExp je vytvorený objekt (výsledok volania funkcie RegExp ako konštruktora). JavaScript nemá triedy. |
||
Časová prodleva: 15 let
|
0