Diskuze: JavaScript neuvědomující si co je this.

JavaScript JavaScript JavaScript neuvědomující si co je this.

Avatar
Michal Žůrek (misaz):

Ahoj, setkal jsem se teď s takovým podivným problém, přijde mi že JavaScript, dkyž zpracovává rychl e hromadu příkazů, tak nějak zapomeno co přesně je this a za this mi označí window i přesto že by to měl být objekt, nesetkal jste se s tím někdo jiný? Kde byla chybka, co mi může unikat?

Ještě doplním, že volám z this funkce další this funkci:

function Objekt {
    this.funkce1 = function () {

    }
    this.funkce2 = function () {
        this.funkce1();
    }
}
Editováno 12.12.2013 21:25
Odpovědět 12.12.2013 21:22
Nesnáším {}, proto se jim vyhýbám.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
Drahomír Hanák:
var res = Objekt(); // this === windows
var res = new Objekt(); // this je vlastní objekt

Tohle není moc dobrý způsob. Např. ve V8 (Chrome) se to bude chovat tak, že při každém vytvoření objektu se na něj dynamicky přidají všechny ty funkce jako vlastnosti toho objektu. Mnohem lepší je definovat je na prototypu té dané funkce (Objekt), takže se vytvoří jen jednou a kompilátor bude jasně vědět, jaké metody tam má, ještě před vytvořením objektu.

 
Nahoru Odpovědět 12.12.2013 22:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Tato diskuze byla označena moderátorem jako nekonstruktivní a myslíme si, že nemá pro veřejnost příliš vysokou hodnotu. Členy můžete samozřejmě stále oslovit soukromě a to formou zpráv nebo chatu.

Zobrazeno 2 zpráv z 2.