Portál AbcLinuxu, 12. května 2025 06:35
Ahoj, nenapada vas proc se v JS zavedli "namespace" s teckou
frameworkXY.ui.Form
proc neni
frameworkXX_ui_Form
S tou teckou mi to pripada matouci, kdyz pres tecku se pristupuje k atributum objektu.
Stejne nemuzu v prg. pouzit
using frameworkXY.ui;
abych mohl psat jen
var xx = new Form ();
vzdy musim psat
var xx = new framework.ui.Form ();
Diky za nazory.
_
muze byt soucasti nazvu?var ui = framework.ui; var xx = new ui.Form();
Pretoze to nie su namespacy ako ich pozname z inych jazykov, ale vlastnosti/atributy objektu.
Presne to mam na mysli. Proc nazvou objekt, tridu, metodu
xx.bubla.Neco
misto
xx_bubla_Neco
a tecky by zustali pro pristup k atributum.
xx_bubla_Neco.Metoda1 ();
Kdyz chcou pouzit ty tecky tak s tim maji spousty komplikaci, jelikoz se jedna o objekt v objektu objektu atd.
Nechapu proc si to komplikuji.
???
Kdyz chcou pouzit ty tecky tak s tim maji spousty komplikaci, jelikoz se jedna o objekt v objektu objektu atd.A o jaké přesně komplikace jde? Já jen že mne žádná nenapadá. Jmenný prostor je prostě objekt, na tom není nic divného.
soubor AAA/UI/Button.js
function AAA_UI_Button ()
{
}
AAA_UI_Button.prototype.Metoda1 = function ()
{
};
AAA_UI_Button.prototype.Metoda2 = function ()
{
};
soubor AAA/UI/Label.js
function AAA_UI_Label ()
{
}
AAA_UI_Label.prototype.Metoda1 = function ()
{
};
AAA_UI_Label.prototype.Metoda2 = function ()
{
};
pouziti:
var btn1 = new AAA_UI_Button ();
var lbl1 = new AAA_UI_Label ();
btn1.Metoda1 ();
lbl1.Metoda2 ();
S trochou nadsazky mam dva soubory a v kazdem jednu tridu.
Coz mi pripada jasne. Zkuste to prepsat do teckove notace?
var AAA = { } AAA.UI = { } AAA.UI.Label = function() { } AAA.UI.Label.prototype.Metoda1 = function() { } var btn1 = new AAA.UI.Label() btn1.Metoda1()Nebo tak nějak, nejsem v objektovém modelu JavaScriptu úplně zběhlý, abych psal kód po paměti. Podle mě hledáte problém, kde není. Drobný dotaz: které řešení víc zasviní globální jmenný prostor?
Problem nehledam, jen mne tak napadlo se zeptat co si o tom mysli ostatni.
Rozhodne diky za vas nazor.
Co se tyce "zasvineni globalniho jmenneho prostoru".
To je nejaky problem, ze tam na jedne urovni bude
AAA_UI_Button
AAA_UI_Label
Kvuli rychlosti nebo kvuli cemu by to melo vadit?
Problem to nie je, ale zasvini sa tym globalny menny priestor. Potom v debugery vidite velke mnozstvo objektov zacinajucich na AAA_UI. Nic nebrani tomu, aby ste to tak pouzivali, ale vacsine ludi to vyhovuje s bodkovou notaciou, ako mozete vidiet v najznamejsich knizniciach. Ak je to s bodkovou notaciou, tak sa da velmi dobre vyuzivat this.
On je problém hlavně v tom, že javascript je úplně odlišný od jazyků jako je Java, C/C++, Php. Bohužel všichni se snaží používat postupy z těchto jazyků i v Javascriptu a to je chyba. Dám příklad jak pracovat OOP v Javascriptu. Jde o to co nejvíce využít toho, že javascript ma closures.
var ui = {};
//neco jako trida v javascriptu
var ui.Button = function (name) {
return {
getName : function () {
return name;
};
}
};
var objectButton = ui.Button('nazev');
objectButton.getName();
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.