简单的Javascript对象范围问题

时间:2014-10-01 23:40:57

标签: javascript

考虑我的以下对象和方法:

function ModalPopupWindow() {
    this.Modal = false; 

    function __InitModalPopUp(height, width, title) {

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

Whey我尝试在ModalPopupWindow对象的init函数中评估this.modal属性,'this'引用Window,而不是对象的属性。我怎样才能获得这个价值?

1 个答案:

答案 0 :(得分:0)

有几种技术,包括名为bind()的方法。另一种方法是在调用函数之前创建一个变量并将其绑定到父上下文。我见过人们使用一个名为下划线的变量(_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如何工作以及如何使用bind()的更多信息,我建议您阅读本文。 http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/