abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 16:44 | Komunita

    Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.

    Ladislav Hagara | Komentářů: 3
    včera 14:55 | Humor

    McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.

    Ladislav Hagara | Komentářů: 9
    včera 00:11 | Nová verze

    Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    10.7. 21:00 | Bezpečnostní upozornění

    Byla vydána nová verze 2.4.64 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 8 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 4
    10.7. 15:22 | Nová verze

    Společnost xAI na síti 𝕏 představila Grok 4, tj. novou verzi svého AI LLM modelu Grok.

    Ladislav Hagara | Komentářů: 11
    10.7. 12:55 | Bezpečnostní upozornění

    Ministerstvo vnitra odhalilo závažný kyberincident v IT systému resortu. Systém, do kterého se dostal útočník bez oprávnění, byl odpojen a nedošlo k odcizení dat [𝕏].

    Ladislav Hagara | Komentářů: 16
    10.7. 11:55 | Humor

    Před rokem byla streamovací služba HBO Max přejmenována na Max. Dle managementu slovo HBO v názvu nebylo důležité. Včera byl Max přejmenován zpět na HBO Max. Kolik milionů dolarů to stálo? 😂

    Ladislav Hagara | Komentářů: 12
    10.7. 02:11 | Nová verze

    Byla vydána nová major verze 8.0.0 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata (Wikipedie). Přehled novinek v oficiálním oznámení a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    10.7. 01:11 | Nová verze

    Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.4. Přehled novinek s náhledy a videi v oznámení na blogu.

    Ladislav Hagara | Komentářů: 1
    10.7. 00:11 | IT novinky

    Instituce státní správy nebudou smět využívat produkty, aplikace, řešení, webové stránky a webové služby poskytované čínskou společností DeepSeek. Na doporučení Národního úřadu pro kybernetickou a informační bezpečnost rozhodla o jejich zákazu vláda Petra Fialy na jednání ve středu 9. července 2025.

    Ladislav Hagara | Komentářů: 8
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (27%)
     (7%)
     (2%)
     (1%)
     (1%)
     (4%)
    Celkem 386 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    24.9.2009 20:28 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: OOP v javascriptu
    higher-order functions a closures jsou fajny vynalez.... v javascriptu je s nima jenom jedna potiz... vetsina lidi, co neco dela s javascriptem nebo nejakym jeho klonem, je neni schopna vstrebat... cest takovym vyjimkam, jako jste vy
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    24.9.2009 20:51 Honza Jaroš | skóre: 6 | blog: moje_strana_plotu | Bohnice
    Rozbalit Rozbalit vše Re: OOP v javascriptu
    Místo
    function Pes(stekot) {
       var psiObjekt = {
          zastekej : function () {
             alert(stekot);
          }
       };
       return psiObjekt;
    }
    
    jde také napsat
    var Pes = function(stekot) {
       this.st = stekot;
    }
    Pes.prototype.zastekej = function() {
      alert(this.st);
    }
    Rozdíl je tu v obsazené paměti, v prvním případě má každá instance psa svoji vlastní metodu zastekej, ve druhém případě tuto metodu sdílejí.
    24.9.2009 20:58 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    V dolní části článku o tomto právě píši. Tohle je způsob OOP v javascriptu, který nemám rád. Je to dáno právě použitím onoho this, na které se nedá vždy spolehnout, protože javascript ho implmentuje chybně. V tomto případě to problém není, ale také se jedná o jednoduchý příklad. V dalším blogpostu ovšem nastíním případ, kdy použití this absolutně selže a chybu aby čert hledal.

    24.9.2009 21:05 Honza Jaroš | skóre: 6 | blog: moje_strana_plotu | Bohnice
    Rozbalit Rozbalit vše Re: OOP v javascriptu
    Budu se těšit (pokud ten blogpost neminu, nesleduju to tu pořád), třeba si zkusím zahrát na čerta :-)
    24.9.2009 21:13 Honza Jaroš | skóre: 6 | blog: moje_strana_plotu | Bohnice
    Rozbalit Rozbalit vše Re: OOP v javascriptu
    PS: zatím jsem si vždy vystačil s "hacky" tohoto typu:
    Pes.prototype.lehni() = {
       alert('lehy lehy');
    }
    
    Pes.prototype.stekej() = {
       var This = this;
       ...
       var bla = function() {
          This.lehni();
       }
       ...
    }
    
    Tak uvidíme, jestli se objeví něco, na co to stačit nebude :-)
    24.9.2009 21:17 Honza Jaroš | skóre: 6 | blog: moje_strana_plotu | Bohnice
    Rozbalit Rozbalit vše Re: OOP v javascriptu
    Ehm, znovu a lépe:
    Pes.prototype.lehni = function() {
       alert('lehy lehy');
    }
    
    Pes.prototype.stekej = function {
       var This = this;
       ...
       var bla = function() {
          This.lehni();
       }
       ...
    }
    
    24.9.2009 21:22 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Ano tyto hacky pomáhají.

    25.9.2009 00:18 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: OOP v javascriptu
    Na zdrojak.cz byla serie článků o JS od pixyho + zajímavá diskuze. V JS nepíšu, jen mi utkvělo v paměti, že to ztrácení this je normální vlastnost JS a bylo tam vysvětleno proč a kdy se to tak děje. Ale jde to celkem mimo mě.
    Baník pyčo!
    25.9.2009 01:50 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    ono ten this si můžete změnit při zavolání kterékoliv funkce:

    function ahoj() { alert(this); }
    
    var a = "ahoj";
    ahoj.call(a);
    

    Spíš jde o to, že programátoři mnohdy ani neví, jak javascript funguje, a pak pak píšou blbosti:)

    25.9.2009 09:11 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Toto ale není vůbec potřeba. Pokud máte funkci, která přijímá jako parametr jinou funkci, je potřeba přidat argument pro kontext funkce (právě ten parametr this). Pokud bude stekej součást nějakého event handleru, tak opět je možné přidat spolu s funkcí její kontext, popřípadě to obalit do jen v tom event handleru.

     

    25.9.2009 09:05 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

     

    V dolní části článku o tomto právě píši. Tohle je způsob OOP v javascriptu, který nemám rád. Je to dáno právě použitím onoho this, na které se nedá vždy spolehnout, protože javascript ho implmentuje chybně. V tomto případě to problém není, ale také se jedná o jednoduchý příklad. V dalším blogpostu ovšem nastíním případ, kdy použití this absolutně selže a chybu aby čert hledal.

     

    To, že některý způsob nemáte rád, ještě neznamená, že není správný. Z hlediska efektivity a čitelnosti kódu je to skoro ten nejlepší způsob vytváření tříd v JS (a je doporučený). Všechno ostatní jsou jen nádstavby nad právě tímto způsobem. Zajímalo by mě ještě, v čem javascript implementuje chybně this? Opět, to že jste nepochopil, jak to celé funguje, ještě nemusí znamenat, že je špatně navržený interpret jazyka. První pravidlo při vývoji totiž je, že pokud mi něco nefunguje, tak je v 98.5% (doplň číslo podle stability knihoven) případech chyba na mé straně.

    25.9.2009 09:15 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Dobrá opravím tedy své tvrzení z chybně, na velice nestandartně, či velice matoucím způsobem. Setkávám se s lidmi, řešícími právě tento problém velice často. Proto ho nedoporučuji. Nikde jsem navíc nenapsal, že tento způsob OOP v javascriptu je jediný správný. Ba naopak, na konci článku to zmiňuji.

    25.9.2009 09:35 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Jen otázka. Když někdo bude špatně programovat v C++, je to chyba jazyka nebo programátora? V javascriptu je to úplně stejně. Pokud má někdo v javascriptu problém s this, první, co bych doporučil, je otevřít knihu, která se zabývá programováním v javascriptu. Po přečtení jedné nebo dvou kapitol to tomu člověku buď doklapne, nebo by měl čtení opakovat:) Nemá cenu psát nesmysly typu var This = this a vnořovat funkce tam, kde nejsou potřeba. Javascript je OO jazyk, kde i funkce je objekt, proto vám to asi připadá matoucí, nestandardní? Jak by jo bylo podle vás nematoucí a standardní?

    25.9.2009 09:48 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Ano já sám hacky nemám rád. Ani mě nenapadá jak by to nemělo být matoucí. Ono používání this má hlavně význam pokud se odkazuji na člena, který je můj a je privátní. Tím můj mám namysli, že je v kontextu objektu, se kterým zrovna pracuji. To se ovšem v javascriptu špatně určuje. Mohu mít vlastně 10 objektů zanořených do sebe. Interpret pak může jen věštit z magické koule k jakému objektu chci this přiřadit. Je tedy pravda, že vývojáři javascriptu zvlolili správně přiřazení this k nejbližšímu objektu. Tudíž ano správné to je(uznávám svou chybu), ale stále si stojím na svém v tom, že je lepší se použití this vyhnout, pokud při profilování aplikace nezjistím zásadní výkonostní problém.

    25.9.2009 10:28 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu
    Ano já sám hacky nemám rád. Ani mě nenapadá jak by to nemělo být matoucí. Ono používání this má hlavně význam pokud se odkazuji na člena, který je můj a je privátní

    Nic jako privátní v js neexistuje. To co popisujete vy jsou lokální proměnné.

    To se ovšem v javascriptu špatně určuje. Mohu mít vlastně 10 objektů zanořených do sebe. Interpret pak může jen věštit z magické koule k jakému objektu chci this přiřadit. Je tedy pravda, že vývojáři javascriptu zvlolili správně přiřazení this k nejbližšímu objektu.

    Javascript nikdy nevěští. Pokud není známý kontext, použije se window (toto je standardní postup). Zanořovat 10 objektů může asi jen blázen;-) V nejhorším případě stačí 2 - funkce dané třídy a inline event handler, popřípadě ještě jeden inline event handler.

    ale stále si stojím na svém v tom, že je lepší se použití this vyhnout, pokud při profilování aplikace nezjistím zásadní výkonostní problém.

    Ale vyhnout se this znamená nepoužít ten jediný nativní objektový model, který máte k dispozici. Jak chtece psát objektový kód na úrovni bez používání nativních funkcí daného jazyka? Objektový model popsaný v článku je problémový, nepřehledný, paměťově náročný a nevýkonný. Neplyne z něj ani jedna výhoda, a v budoucnu, až vám naroste codebase ho stejně budete přepisovat na nějaký jiný, protože vám to přeroste přes hlavu. Zajímal by mě jeden jediný důvod k použití právě objektového modelu zmíněného v článku. Navíc mám silné pochybnosti o tom, že k pochopení je váš model jednodušší než ten standardní implementovaný pomocí Object.prototype.

    25.9.2009 10:33 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Vcelku mě mrzí, že jste mě tak moc v této odpovědi chytal za slovíčka. V dalším článku se rozepíši o motivaci, proč já vlastně nepoužívám this. Intuitivní mi můj přístup příjde v tom, že prostě vytvořím objekt. Netvořím funkci, nad kterou když zavolám new získám objekt. Ovšem prosím, neříkám že je to špatně, jen říkám v čem to mě, přijde intuitivnější.

    25.9.2009 10:56 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Berte to trochu s nadhledem;)

    Rozepište se, mi to zatím bohužel přijde jako nepochopení koncepce JS a zavírání dveří před sebou samotným.

    25.9.2009 11:01 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Já to beru s nadhledem, ale občas mi přijde, že lidé zbytečně vypichují slovíčka z kontextu a dávají jim význam, který původně neměli. Pokud se k tomu ještě dnes dostanu napíši co oceňuji na javascriptu a proč se mi tak líbí. Bude tam obsažen právě i důvod proč nepoužívám prototypovou dědičnost.

    25.9.2009 01:45 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    OOP v javascriptu jsem se hodně zabýval, pak jsem objevil toolkit qooxdoo, který tomu dává celkem šťávu. Napsal jsem proto lightweight knihovnu BLite, která implementuje velmi podobný model.

    Příklad:

    BLite.Object.define("company.BaseClass", {
      // dedicnost
      extend: Blite.Object,
    
      construct: function() {
        // zavola superclass konstruktor
        this.base(arguments);
      },
      members: {
        sayHello: function() { throw new Error("This method must be reimplemented"); }
      }
    });
    
    BLite.Object.define("company.YourClass", {
      // dedicnost
      extend: company.BaseClass,
    
      construct: function() {
        // zavola superclass konstruktor
        this.base(arguments);
      },
      members: {
        sayHello: function() { alert("Hello"); }
      }
    });
    
    var o = new company.YourClass();
    alert(o instanceof company.BaseClass); // true
    o.sayHello(); // Hello
    

    Výhodou je dědičnost a možnost použít instanceof + další blbosti. Dále pak asi jednoduchost. Ale neviděl jsem nikoho, kdo by měl potřebu používat takovou knihovnu s tak silným OOP pro obyč stránky, většinou se to dělá stylem jquery (který mi teda nesedl).

    25.9.2009 01:57 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Ještě bych dodal, že ve světě JS se uchytil celkem jednoduchý koncept pro vytváření protected a private members. Protected je s jedním podtržítkem a private se dvěma. Jednoduché a snadno zapamatovatelné. Některé tooly (třeba qooxdoo generator) jsou schopné private metody přejmenovat ve výsledném buildu.

    25.9.2009 08:30 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Javascript je jedinečný jazyk, do kterého je vyloženě škoda vměstnávat věci jako je (klasická) dědičnost, protected členy a navíc ještě typovost pro využití instanceof. Javascript tyto věci nemá, protože je nepotřebuje. Není to tím, že by se javascript používál na jednoduché stránky, kde jsou tyto věci k ničemu. Je to tím, že v javascriptu se problémy, které tyto vlastnosti jiných jezyků řeší, řeší jinak. Je tudíž zbytečné hackovat javascript, aby to podporoval stejně jako ostatní jazyky.

    25.9.2009 08:58 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Problém je to, že to co uvádíte v článku, jsou naprosté základy, které nestačí a jejich použití je mnohdy neefektivní, jako zrovna to vaše. Víte jake paměťové režie mají z closures? Javascript dědičnost má, a pokud ji nebudete používat (nebo používat špatně), tak se jen ochuzujete o jeden prvek tohoto jazyka. Typovost je opět potřeba a některé knihovny nabízí kontrolu typů ve všech funkcích v debug módu již v základu, proč? Protože je jednodušší ladit kód, kde vám daná knihovna přesně řekne, co je špatně. Ještě snad nikdy jsem nenapsal funkci, ve které bych očekával parametry různých typů tříd (OK pro generiku vynechám String a Number, ale to jsou extra výjimky).

    V jednom projektu mám codebase v .js asi okolo 15.000 řádků. Kdybych dědičnost bastlil vašim způsobem, tak se v tom zachvilku nevyznám ani já sám;-)

    25.9.2009 09:09 Michal | skóre: 4 | blog: vyvojaruv
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Věřím, že to může být pro lidi matoucí. Vy jste ovšem názorný příklad programátora, který pracuje s implementací OOP v jazycích jako je C++, C#, Java a pro ty je to matoucí dvojnásob. I já pracuji v Jave a věřte dalo mi hodně práce se přeorientovat. V javascriptu jde zcela o jiný přístup. Ano, máte pravdu, to co jsem zde napsal jsou naprosté základy. Chtěl jsem seznámit více lidí, s tím jak se v javascriptu dá psát objektový kód. Opravdoví zájemci začnou studovat dál. Hodlám samozřejmě ještě něco málo napsat. Já si dokonce troufám tvrdit, že javascript je idelání jazyk na to začít se od píky učit správné objektové programování.

     

    25.9.2009 09:19 dark
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Jen poznámka. Právě pro programátory v C++/Javě/C# je dobré napsat, že v javascriptu se dá dělat úplně stejně (dokonce lze v některých případech vyžadovat i typovou kontrolu, není to na škodu). Mrkněte třeba na frameworky qooxdoo, smartclient, extjs, dojo, atd. Nemusíte se přece přeorientovávat na to, aby jste byl schopný napsat kvalitní OO kód. Psát správně objektově znamená správně myslet a využít vlastností daného jazyka, které zatím nebyly zmíněny;-) Javascript je jazyk, který je postavený na velmy jednoduchých základech, zajímavé je ale to, že jen málokdo těnto základům opravdu porozumí:)

    Rád si přečtu další zápisek, ale doufám, že to bude jeden z těch, který ukáže, jak se věci dělají dobře;-)

    25.9.2009 13:23 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: OOP v javascriptu

    Tohle je pro tento účel mnohem vhodnější: comtalk.cz/public/Self/self.avi

    Objektový model JavaScriptu vychází právě ze Selfu (selflanguage.org/) a byl bohužel poměrně citelně omezen.

     

    I'm sure it crashed in the most type-safe way possible.
    1.10.2009 13:39 seeker
    Rozbalit Rozbalit vše Re: OOP v javascriptu

     No nic moc prispevek.

    Doporucuji knihu JAVASCRIPT: THE GOOD PARTS. Na youtube je i prednaska autora knihy. Vysvetluje tam, proc by se mely objekty delat jinak.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.