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í
×
    dnes 01:55 | Nová verze

    Proton (Wikipedie), tj. fork Wine integrovaný ve Steamu umožňující na Linuxu hrát hry určené pouze pro Windows, byl vydán ve verzi 11.0-1. Přehled novinek se seznamem nově podporovaných her na GitHubu. Aktuální přehled všech podporovaných her na stránkách ProtonDB

    Ladislav Hagara | Komentářů: 0
    včera 20:44 | Zajímavý software

    Byly publikovány zdrojové kódy počítačové hry Unturned. Pro nekomerční účely. V plánu je přelicencování pod MIT. Hra Unturned je postavena nad multiplatformním herním enginem Unity.

    Ladislav Hagara | Komentářů: 0
    včera 15:55 | IT novinky

    První česká družice navržená a sestavená výhradně studenty se dostala na oběžnou dráhu Země. Družice KOSTKA, kterou vyvinul studentský tým YSpace z Vysokého učení technického v Brně (VUT), dnes odstartovala na palubě rakety Falcon 9 společnosti SpaceX v rámci mise Transporter-17 z kalifornské základny Vandenberg Space Force Base.

    Ladislav Hagara | Komentářů: 0
    včera 05:00 | IT novinky

    Po nákresech ovladače Steam Controller a puku společnost Valve na svém GitLabu publikovala projekt Inkterface, tj. podrobný návod (PDF, video v mp4) na sestavení předního panelu s e-papírovým displejem pro Steam Machine pro zobrazování systémových informací. Použity jsou součástky od společnosti Adafruit.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | Bezpečnostní upozornění

    V jádře Linux byla nalezena a v dubnu letošního roku v upstreamu opravena kritická zranitelnost Bad Epoll aneb CVE-2026-46242. Jedná se o zranitelnost typu "race-condition use-after-free", která běžnému uživateli umožňuje získat práva roota. Na distribucích Linuxu i na Androidu. Dokonce i zevnitř sandboxu prohlížeče Chrome. Chyba byla do Linuxu zavedena v dubnu 2023, tj. Linux 6.4.

    Ladislav Hagara | Komentářů: 0
    6.7. 23:22 | Nová verze

    Byla vydána nová verze 10.4 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu důležitých bezpečnostních oprav, vylepšení funkcí a oprav chyb. Vyzkoušet lze experimentální podporu postkvantového algoritmu mldsa44-ed25519.

    Ladislav Hagara | Komentářů: 0
    6.7. 16:33 | Zajímavý projekt

    Open Printer je otevřená kompaktní tiskárna od Open Tools. Brzy by měla být spuštěna kampaň na její podporu na Crowd Supply. Současně by měly být uvolněny zdrojové kódy. Postavena je na Raspberry Pi Zero W a STM32. Používá inkoustové kazety HP 302.

    Ladislav Hagara | Komentářů: 2
    6.7. 15:11 | Nová verze

    Byla vydána nová verze 3.28.0 FreeRDP, tj. svobodné implementace protokolu RDP (Remote Desktop Protocol). Opraveno bylo 8 zranitelností.

    Ladislav Hagara | Komentářů: 0
    4.7. 23:33 | IT novinky

    Čeští policisté společně se svými tureckými kolegy zadrželi 51 lidí, kteří se podle kriminalistů podíleli na provozu podvodného call centra v Istanbulu. Skupina je spojena s 1173 případy podvodů na českých občanech, při kterých vznikla škoda přes 553 milionů korun.

    Ladislav Hagara | Komentářů: 7
    3.7. 03:55 | Nová verze

    Immich byl vydán v nové verzi 3.0.0. Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.

    Ladislav Hagara | Komentářů: 5
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (8%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (16%)
     (25%)
    Celkem 2073 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Javascript - Nefunkční this uvnitř funkce

    13.10.2019 14:59 zacatecnickej
    Javascript - Nefunkční this uvnitř funkce
    Přečteno: 466×
    Ahoj, nemůžu zavolat metodu this.test(); uvnitř funkce v metodě show(). Neví někdo proč?

    class Foo{
       test(){
          return 'bar';
       }
       show(){
          setTimeout ( function (){
             return this.test();
          },100);
    }
    }
    
    var foo = new Foo();
    var a = foo.show();
    console.log(a);

    Řešení dotazu:


    Odpovědi

    13.10.2019 15:26 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Javascript - Nefunkční this uvnitř funkce
    Ta anonymní funkce není součástí třídy a proto nemůže vidět její komponenty.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    13.10.2019 15:44 zacatecnickej
    Rozbalit Rozbalit vše Re: Javascript - Nefunkční this uvnitř funkce
    A jde to opravit aby nebyla anonymní ta funkce ale zůstala funkční a viděla this?
    Řešení 1× (BoneFlute)
    13.10.2019 15:51 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Javascript - Nefunkční this uvnitř funkce

    Můžeš ji volat a voláš ji. Jenom ta funkce vůbec nic nedělá. Celý ten kód je minimálně dvojitý arcinesmysl. :-D

    Zaprvé, ta inline funkce, kterou plánuješ tím časovačem (za 100 milisekund), nemá vůbec žádný efekt, zavolá test(), ten vrátí 'bar', inline funkce pak vrátí výsledek toho test()u, tedy zase 'bar', ale ten nikoho nezajímá, takže se ztratí a zapomene.

    Zadruhé, to, co se tam snažíš vypsat pomocí console.log(), nemá žádnou spojitost s návratovou hodnotou funkce test() (jestli o tohle šlo). V proměnné a je návratová hodnota funkce show(), která je undefined, protože ve funkci show() není žádný return statement. Tady si můžeš přečíst, jak správně vracet hodnoty z asynchronních volání a setTimeout().

    Zatřetí, v té inline funkci se nedá přistupovat k implicitnímu parametru this takhle přímo, protože taková inline funkce je (velmi zjednodušeně řečeno) buďto jiný objekt nebo úplně mimo kontext jakéhokoliv objektu, tj. proměnnou this nemá vůbec definovanou. Tohle je taky známá věc, stačí jenom hledat.

    class Foo {
      constructor(message) {
        this.message = message;
      }
      show() {
        var _this = this;
        setTimeout (function() {
          console.log(_this.message);
        }, 1000);
      }
    }
    
    var foo = new Foo('blahblah');
    foo.show();
    console.log('Show scheduled!');
    
    13.10.2019 15:56 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Javascript - Nefunkční this uvnitř funkce

    Oprava: Ta metoda test() původně nebyla volaná vůbec (právě kvůli problému č. 3 s použitím this). To mi nějak uniklo.

    13.10.2019 17:02 zacatecnickej
    Rozbalit Rozbalit vše Re: Javascript - Nefunkční this uvnitř funkce
    Ahoj, díky moc. Mě jde opravdu jenom o tuto funkci 'setTimeout' kterou mám v nějaké metodě a v té funkci se potřebuji dostat přímo na this, jde to i bez použítí var _this = this ; ?
    setTimeout ( function (){
       this.test();
    },100);
    14.10.2019 00:47 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Javascript - Nefunkční this uvnitř funkce

    Tu inline funkci si lze představit jako metodu v oddělenén samostatném objektu, tj. i kdyby tam this byl definovaný, ukazoval by na jinou instanci jiného typu.

    Nechápu, co míníš formulací „přímo na this“. Když si uložíš var _this = this, pak _this ukazuje přímo na ten původní objekt, na který ukazoval this. Je to reference. Jde jen o formalitu s uložením té reference v kontextu, který bude později dostupný dynamické inline funkci; nic přímého / nepřímého bych za tím nehledal.

    18.10.2019 10:56 krab
    Rozbalit Rozbalit vše Re: Javascript - Nefunkční this uvnitř funkce

    Dobry den, pouzijte metodu bind:

     

    setTimeout(function () {
       this.test();
    }.bind(this), 100);
    

     

    Aby Vas ukazkovy kod spravne fungoval, je nutne pouzit promise:

     

    class Foo {
       test() {
          return 'bar';
       }
    
       show() {
          return new Promise(function(resolve, reject) {
             setTimeout (function () {
                resolve(this.test());
             }.bind(this), 100);
          }.bind(this));
       }
    };
    
    var foo = new Foo();
    var a = foo.show();
    a.then(console.log);
    
    18.10.2019 18:55 crap
    Rozbalit Rozbalit vše Re: Javascript - Nefunkční this uvnitř funkce
    Konecne nekdo kdo umi slusne a vecne odpovedet

    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.