2016-11-09 63 views
3

内阅读对象属性(不确定?)当我试图从事件功能onMouveMove我得到以下错误访问对象this.guy不能实例

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

当我检查Chrome的Devtool,价值存在并存在,它只是无法识别“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>

任何想法?

回答

7

当您为some_html_element设置onMouseMove处理程序时,该函数未绑定到您的MyClass实例。你可以明确地结合它解决这个问题:

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

该死太慢... – Stefan

+0

你应该将其标记为重复,已经有很多的问题,正是这样 –

+0

跆拳道,我现在恨的JavaScript。 谢谢! –