• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z this (obiektywność w JS i eventy)

VPS Starter Arubacloud
+1 głos
112 wizyt
pytanie zadane 19 czerwca 2015 w JavaScript przez rafal.budzis Szeryf (85,260 p.)

Witam mam problem chciałem napisać sobie mały edytorek pomyslałem ze obiektowośc bedzie tu dobrym rozwiązaniem ale JS jest dziwnym językiem którego nie ogarniam do końca. Mini przykład o co mi chodzi 

function KlasaEdytora(){

    this.pole1 = 1;
    this.pole2 = 2;

    $('.button').delegate('click', function () { 
            //tutaj this odwołuje się do obiektu który wywołał event a potrzebuje się odwołać do obiektu KlasyEdytora
     });

}

Znalazłem takie rozwiązanie 

function KlasaEdytora(){

    this.pole1 = 1;
    this.pole2 = 2;
    var zmienna = this;
    $('.button').delegate('click', function () { 
            alert(zmienna.pole1);
     });

}

Ale nie zadowala mnie ono do konca bo przy stworzeniu drugiego obiektu tej klasy pozbawiłbym sie mozliwości operacji na pierwszym. Jak się to powinno rozwiązać ?

1 odpowiedź

0 głosów
odpowiedź 19 czerwca 2015 przez Comandeer Guru (599,730 p.)

Powinno się to rozwiązać przy pomocy Function.prototype.bind

$('.button').delegate('click', function () { 
            alert(this.pole1);
}.bind(this));

No i nie $.fn.delegate, tylko $.fn.on (zwłaszcza, że do niczego nie delegujesz!)

$('.button').on('click', function () { 
            alert(this.pole1);
}.bind(this));

No i nie rozumiem czemu pozbawiłbyś się możliwości operacji na pierwszym? Zmienna zmienna jest przecież zmienną lokalną i nie wycieknie poza konkretną instancję "klasy" KlasaEdytora.

Podobne pytania

0 głosów
3 odpowiedzi 357 wizyt
pytanie zadane 3 stycznia 2018 w HTML i CSS przez Artek Stary wyjadacz (11,800 p.)
0 głosów
0 odpowiedzi 143 wizyt
pytanie zadane 3 czerwca 2018 w JavaScript przez lateM Pasjonat (17,660 p.)
0 głosów
1 odpowiedź 158 wizyt
pytanie zadane 8 grudnia 2016 w JavaScript przez hoktaur Pasjonat (22,250 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...