Mam obiekt flash innej firmy, który mogę manipulować za pośrednictwem udostępnionego przez niego interfejsu JavaScript javascript. Próbuję wysłuchać wydarzenia na tym obiekcie, a następnie ogniskuję obiekt wewnątrz obiektu, aby jeszcze bardziej spopularyzować to wydarzenie. Zdarza się, że używam EXT Js, ale nie sądzę, że jest to ważne.addEventListener i zakres tego
Przykładowy kod
this.chart.addEventListener('create', function() {
this.fireEvent('created');
}, false)
Moim problemem jest to, że „to” wewnątrz funkcji anonimowej odnosi się do obiektu, który opalane zdarzenie zamiast mojego obiektu, który chcę ognia zdarzenie dalej.
Jest to kolejny problem z zakresu. Z góry dziękuję za pomoc.
Wolę 'var self = this;'. Utworzenie funkcji, a następnie jej wykonanie podczas przekazywania "this" jako parametru, wydaje się nieco przesadzone - kod jest nieco dłuższy ;-) –
@Andy: Tak, często robię to również, gdy kod istnieje w małym kontekście wykonania. Jednak powyższe jest standardowym podejściem, które działa w większej liczbie różnych scenariuszy.Zakres identyfikatora "self" ogranicza się tylko do zamknięcia, nie ma niebezpieczeństwa, że kolejny kod może zmodyfikować wartość zawartą w nim przed wywołaniem zdarzenia. Nie dotyczy to podejścia 'var self = this;'. – AnthonyWJones