Avatar
Majkel
Člen
Avatar
Majkel:

Ahoj, jako C# programátorovi mi pořád některé věci v JS nejsou úplně jasné. Například v C# mám Namespace, kde si vytvořím třídu s metodami. Následně si v jiné třídě ve stejném namespace vytvořím instanci a používám dané metody. Jak tohle funguje v JS?

 
Odpovědět 22. května 12:22
Avatar
Majkel
Člen
Avatar
Majkel:

A ještě jsem zapomněl na to, že každá třída je reprezentovaná jiným souborem.

 
Nahoru Odpovědět 22. května 12:35
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

V JS nic jako namespace není... jsou tam moduly, kde 1 soubor = 1 modul.. pak je můžeš "reexportnout" pomocí něčím, čemu se říká barrel.. to by se vzdáleně dalo brát jako namespace... do doby, než byly moduly, tak se v javascriptu simulovaly namespacy obalením do objektu.. v Typescriptu si mel na todle internal moduly ..

Napsal si

module A{
function c(){}
}

a vygenerovaloo ti to neco pomoci iffe..

var A;
(function (A) {
        function C() {
        }
    A.C=C;
})(A|| (A = {}));
var x =  A.C();
 
Nahoru Odpovědět 21. července 21:10
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Majkel
patrik.valkovic:

V Javascriptu můžeš soubory spojit. Tady doporučuji Gulp nebo Grunt. Javascript má jinou logiku než třeba C#, Java nebo C++. Pokud si se Javascriptem nerozumíš a chtěl bys ho více napodobit C#, pak doporučuji Typescript. Jinak jsou různé způsoby, jak napodobit namespace - viz předchozí příspěvek. Nicméně lze dostat určitou úroveň zapouzdření třeba následovně:

var namespace = (function() {
        var prvniPromenna;
        var druhaPromenna;
        var objekt = {};
        objekt.prototype.setPrvniPromenna = function(value) {
                prvniPromenna = value;
                }
        objekt.prototype.getPrvniPromenna = function() {
                return prvniPromenna;
                }

        return objekt;
})();

Důležité je, že nyní se k druhé proměnné vůbec nedostaneš (teda alespoň ne nějakým jednoduchým způsobem).

Nahoru Odpovědět 21. července 21:43
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.