Autor | Zpráva | ||
---|---|---|---|
Darker Profil |
#1 · Zasláno: 18. 10. 2012, 11:25:55
function Trida() { this.public = "text"; var private1 = "text"; var private2 = 42; this.getPrivate = function(name) { return /* ??? */; } } //Získání hodnoty private1: var tr = new Trida(); alert(tr.getPrivate("private1")); |
||
Chamurappi Profil |
#2 · Zasláno: 18. 10. 2012, 11:32:25
Reaguji na Darkera:
Nijak. Leda bys ty privátní proměnné měl v privátním objektu, pak můžeš používat objekt[name] .
Mít takovouhle universální metodu stejně trochu postrádá smysl, ne? |
||
Radek9 Profil |
#3 · Zasláno: 18. 10. 2012, 11:38:41
Darker:
Jsi si jistý, že ty proměnné opravdu potřebuješ privátní? Stalo by se něco, kdyby se k nim dalo dostat zvenčí? Jestli ne, tak je normálně navěs na instanci a zbytečně nevytvářej funkce v konstruktoru. |
||
_es Profil |
Darker:
Správne použitie premenných z hľadiska výkonu je také, aby kompilátor či interpret „vedel“ už pred behom skriptu o aké premenné ide a nemusel vyhodnocovať ich názov. Taký „univerzálny getter“ by to narušil, preto to ide len „škaredou“ funkciou eval, či podobne „škaredými“ spôsobmi. Je o tom zaujímavý článok: http://www.zdrojak.cz/clanky/javascript-vykonnostne-neprijemne-konstrukce/ Išlo by sprístupniť argumenty funkcie, no len podľa ich poradového čísla: function Trida(a,b,c) { this.public = "text"; var arg = arguments; this.getPrivate = function(i) { return arg[i]; } } var tr = new Trida(10,20,30); alert(tr.getPrivate(0)); |
||
Časová prodleva: 12 let
|
0