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 21:11 | Nová verze

Vyšla nová verze 1.4.0 nástroje pro připojení ke vzdálené ploše Remmina. Mezi změnami figurují např. opravy autentizace přes SSH nebo nakládání se schránkou při připojení přes RDP. Sestavení dostupná z PPA pro Ubuntu skončí ve prospěch Flatpaku a Snapu.

Fluttershy, yay! | Komentářů: 3
21.2. 16:33 | Komunita

Google zveřejnil seznam 200 organizací přijatých do letošního Google Summer of Code (GSoC). Dle plánu se studenti přihlašují od 16. do 31. března. Vydělat si mohou od 3 000 do 6 600 dolarů. V Česku a na Slovensku 3 600 dolarů. Další informace v často kladených otázkách (FAQ). K dispozici jsou také statistiky z minulých let.

Ladislav Hagara | Komentářů: 1
21.2. 15:55 | IT novinky

Ve věku 74 let zemřel Lawrence Tesler. V 70. letech pracoval v Xerox PARC a posléze odešel do Apple. Zabýval se především zjednodušováním uživatelských rozhraní, byl odpůrcem modality a přispěl k prosazení moderního způsobu označování a kopírování textu – myší a klávesovými zkratkami (kombinace s XCV) – v raných Apple Human Interface Guidelines. Dále se podílel např. na vývoji Smalltalku a souvisejícího přenosného počítače Xerox NoteTaker nebo později PDA Apple Newton.

Fluttershy, yay! | Komentářů: 6
21.2. 13:11 | Zajímavý článek

Aktuální příspěvek What is Mobile PureOS? na stránkách společnosti Purism je věnován operačnímu systému Mobile PureOS, tj. PureOS pro mobilní zařízení a především pro telefon Librem 5. Víceméně se jedná o stabilní Debian s GNOME doplněný o balíčky phosh, phoc, libhandy, Calls, Chats a další.

Ladislav Hagara | Komentářů: 0
20.2. 19:33 | Zajímavý článek

Jozef Mlich se v příspěvku PinePhone je nové OpenMoko na svém blogu věnuje svému novému linuxovému chytrému telefonu PinePhone v edici BraveHeart: "Momentálně se pocity z tohohle zařízení dají přirovnat k BrokenMoku. Většina věcí prostě nefunguje. Minimálně ne sama od sebe. Začít se dá už u samotného hardware, kde existuje wiki stránka popisující nedostatky".

Ladislav Hagara | Komentářů: 23
20.2. 10:00 | Zajímavý projekt

Justine Haupt aktualizovala svůj open source mobilní telefon s rotační číselnicí a zveřejnila kompletní dokumentaci, vlastní kód, schémata i STL soubory pro 3D tisk. Desku plošných spojů případně i vytištěný obal lze koupit v jejím obchodu.

Ladislav Hagara | Komentářů: 40
20.2. 06:00 | IT novinky

Otevřená certifikační autorita Let's Encrypt v příspěvku na svém blogu informuje, že žádosti o vystavení certifikátů nově validuje z několika míst současně (Multi-Perspective Validation). Další informace v diskusním fóru.

Ladislav Hagara | Komentářů: 10
19.2. 13:55 | Nová verze

Byla vydána verze 15.0 na Debianu založené linuxové distribuce Untangle NG Firewall. Přehled novinek v poznámkách k vydání a ve videu na YouTube. Vyzkoušet lze (zatím neaktualizované) demo webového rozhraní.

Ladislav Hagara | Komentářů: 0
19.2. 12:11 | Pozvánky

Letošní ročník konference LinuxDays se uskuteční o víkendu 3. a 4. října, opět se potkáme v pražských Dejvicích na FIT ČVUT. Také během devátého ročníku nás budou čekat desítky přednášek, workshopy, stánky a spousta doprovodného programu. Aktuální dění můžete sledovat na Twitteru nebo Facebooku, přidat se můžete také do telegramové diskusní skupiny.

Petr Krčmář | Komentářů: 7
19.2. 10:22 | Zajímavý článek

Alexander Popov se v příspěvku na svém blogu podrobně věnuje možnostem zneužití bezpečnostní chyby CVE-2019-18683 v linuxovém podsystému V4L2. Videoukázka eskalace práv na YouTube. Chyba byla v upstreamu opravena v listopadu loňského roku. Alexander Popov se chybě věnoval ve své přednášce (pdf) na konferenci OffensiveCon 2020.

Ladislav Hagara | Komentářů: 0
Vydržela vám novoroční předsevzetí?
 (9%)
 (5%)
 (3%)
 (83%)
Celkem 182 hlasů
 Komentářů: 0
Rozcestník

www.AutoDoc.Cz

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

13.10.2019 14:59 zacatecnickej
Javascript - Nefunkční this uvnitř funkce
Přečteno: 368×
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: 44 | 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: 47 | blog: Republic of Mordor | Zürich
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: 47 | blog: Republic of Mordor | Zürich
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: 47 | blog: Republic of Mordor | Zürich
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.