2014-10-01 80 views
0

考慮我下面的對象和方法:簡單的JavaScript對象範圍問題

function ModalPopupWindow() { 
    this.Modal = false; 

    function __InitModalPopUp(height, width, title) { 

     if(this.Modal != true){ 
      divOverlay.onclick = function() { window.parent.HideModalWindow(); }; 
     } 
    }  
} 

乳清我嘗試評估ModalPopupWindow對象的初始化函數裏面this.modal屬性,「這」是引用到窗口,而不是對象的屬性。我怎樣才能得到這個價值?

+0

當您創建對象時使用「新」 – dandavis 2014-10-01 23:44:35

+0

您在哪裏調用'__InitModalPopUp'?這個指的是什麼取決於函數是如何被調用的。瞭解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/這個 – 2014-10-01 23:45:51

回答

0

有幾種技術,包括一個叫綁定()的方法。另一種方法是在函數被調用之前創建一個變量並將其綁定到父上下文。我見過的人使用一個名爲下劃線變量這(_this)

function ModalPopupWindow() { 

//Capture the correct "this" 
var _this = this; 

this.Modal = false; 

function __InitModalPopUp(height, width, title) { 

    //Use _this here 
    if(_this.Modal != true){ 
     divOverlay.onclick = function() { window.parent.HideModalWindow(); }; 
    }  
} 

} 

,如果你想了解更多關於JavaScript的工作原理,以及如何使用綁定(我推薦這篇文章)。 http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/

+0

不要忘記製作'_this' * local *。 – 2014-10-01 23:48:04

+0

@Felix。謝謝! – ahoffer 2014-10-01 23:49:48