考虑我的以下对象和方法:
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,而不是对象的属性。我怎样才能获得这个价值?
答案 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/