2016-11-09 84 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。 謝謝! –