| Autor | Zpráva | ||
|---|---|---|---|
| kubatt Profil |
#1 · Zasláno: 3. 12. 2013, 20:52:04
Ahoj chci se zeptat tvořím si v OOP objekt
var Test = function(){}
Test.prototype = {
test: function(aa){ return aa; }
}ale problém je že ji musím volat takto tt = new Test().test("dd")tt = new Test.test("dd") |
||
| pako Profil * |
#2 · Zasláno: 3. 12. 2013, 21:42:45
Z mojho pohladu je problem uz ta prva definicia
tt. Preco by to tak bolo lepsie ? Ked potrebujes priradit premennej tt retazec "dd" tak na to nepotrebujes pouzivat konstruktor.
Mozno by bolo lepsie najskor sa naucit nieco o objektoch, vlastnostiach a metodach, co je vysledkom volania funkcie a az potom riesit konstruktory a prototypy. |
||
| Joker Profil |
#3 · Zasláno: 3. 12. 2013, 21:56:45
kubatt:
> no ale lepe by bylo to volat takto tt = new Test.test("dd")Nejde, protože syntakticky je to nesmysl. Prostě konstruktor se píše se závorkami na konci. Ale šlo by to udělat třeba i takhle: var test = { test : function(aa) { return aa; } }; test.test("dd");
tt = test.test("dd");Jsou to ale dva rozdílné skripty pro různé situace a nedá se mezi nimi rozhodovat podle toho, který je „hezčí“. |
||
| Chamurappi Profil |
#4 · Zasláno: 3. 12. 2013, 22:40:40
Reaguji na Jokera:
„syntakticky je to nesmysl. Prostě konstruktor se píše se závorkami na konci.“ To není úplně přesné, protože: 1) Při volání konstruktoru bez argumentů je dovoleno závorky vynechat. Můžeš si zkusit třeba alert(new Date).
2) Konstruktor může být (skoro) jakákoliv funkce, nemusí být globální, ale klidně uvnitř objektu, tedy kdyby v Test.test byla funkce, mohla by se též použít jako konstruktor, pak by i ten citovaný kubattův řádek dával smysl.
|
||
|
Časová prodleva: 12 let
|
|||
0