IntersectionObserver: "TypeError Uncaught: Não é possível ler a propriedade de undefined" quando chamado onIntersection ()

votos
0

Eu tenho o seguinte código:

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

E quando executá-lo, eu tenho um erro em um momento, quando onIntersection () é executado. O erro é: TypeError Uncaught: Não é possível ler a propriedade 'b' de indefinido. Como posso passar 'isto' instância de ObjectOne para onIntersection function ()?

Publicado 27/11/2018 em 18:10
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Graças a Heretic macaco para link útil Como acessar o correto thisdentro de uma chamada de retorno? - que foi útil e me dar uma direção para a pesquisa. E mais informações úteis estava no uso do método JavaScript 'bind' . Adicionando função bind () resolver o problema:

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;
        ...
    }
}
Respondeu 27/11/2018 em 18:47
fonte usuário

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