IntersectionObserver: «Uncaught TypeError: Невозможно прочитать свойство undefined» при вызове onIntersection () - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть следующий код:

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;
        ...
    }
}

И когда я запускаю его, у меня возникает ошибка в тот момент, когда выполняется onIntersection ().Ошибка: Uncaught TypeError: Невозможно прочитать свойство 'b' из неопределенного.Как я могу передать этот экземпляр ObjectOne в функцию onIntersection ()?

1 Ответ

0 голосов
/ 27 ноября 2018

Спасибо Heretic Monkey за полезную ссылку Как получить доступ к правильному this внутри обратного вызова? - это было полезно и дало мне направление для поиска.А более полезная информация была на Использование метода JavaScript 'bind' .Добавление функции bind () решает проблему:

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;
        ...
    }
}
...