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: 11 let
|
0