IntersectionObserver: "Uncaught TypeError: Kan niet lezen eigendom van undefined" als ze worden opgeroepen onIntersection ()

stemmen
0

Ik heb volgende code:

var ObjectOne = {
    a : {
        b : 4,
        ...
    }        
    observer : 0,
    ...

    init() { 
        this.a.b = 5;           
        ...
        this.observer = new IntersectionObserver(this.onIntersection, ...);               
        this.observer.observe(...);
        ...       
    }
    onIntersection(entries, observer) {
        ...
        var test = this.a.b;
        ...
    }
}

En toen voer het uit, ik heb een fout op een moment, waarop onIntersection () wordt uitgevoerd. De fout is: Uncaught TypeError: Kan niet lezen eigenschap 'b' van undefined. Hoe kan ik doorgeven 'dit' voorbeeld van ObjectOne tot onIntersection () functie?

De vraag is gesteld op 27/11/2018 om 18:10
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Met dank aan Heretic Monkey voor nuttige link Hoe toegang krijgen tot de juiste thisin een callback? - het was behulpzaam en geef me een richting voor zoeken. En nog veel meer nuttige informatie was op het gebruik van de JavaScript 'bind' methode . Toevoegen van bind () functie oplossen van het probleem:

var ObjectOne = {
    a : {
        b : 4,
        ...
    }        
    observer : 0,
    ...

    init() { 
        this.a.b = 5;           
        ...
        this.observer = new IntersectionObserver(this.onIntersection.bind(this), ...);               
        this.observer.observe(...);
        ...       
    }
    onIntersection(entries, observer) {
        ...
        var test = this.a.b;
        ...
    }
}
antwoordde op 27/11/2018 om 18:47
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more