3 votes

Impossible de lire la propriété d'un objet (non défini ?) dans une instance.

Lorsque j'essaie d'accéder à l'objet ce.type de la fonction d'événement onMouveMove Je reçois l'erreur suivante :

"Uncaught TypeError: Cannot read property 'prop1' of undefined"

Lorsque j'inspecte avec l'outil Devtool de Chrome, la valeur existe et est présente, mais elle n'est pas reconnue dans la fonction "onMouseMove".

MyClass = function(some_html_element){
  this.guy = {"prop1":[]};
  some_html_element.onmousemove = this.onMouseMove;
}

MyClass.prototype.onMouseMove = function(evt){
  if(!this.guy.prop1){    //<- here's the error
            alert("no error");
  }
}

a = new MyClass(document.querySelector("#example"))

<div id="example">
MOVE MOUSE ON ME
</div>

Des idées ?

7voto

Tibrogargan Points 2951

Lorsque vous définissez le gestionnaire onMouseMove pour some_html_element, la fonction n'est pas liée à votre instance MyClass. Vous pouvez corriger cela en la liant explicitement :

MyClass = function(some_html_element){
  this.guy = {"prop1":[]};
  some_html_element.onmousemove = this.onMouseMove.bind(this);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X