将对象传递给onreadystatechange

时间:2012-02-14 14:05:42

标签: javascript ajax oop

我希望AJAX回调在myFucntion中触发alert()并使用“It working”我如何在ajaxResponse中引用myobject对象?

function myobject() {
    this.val = "worked";

    http.onreadystatechange = function ajaxResponse() {
        if (http.readyState == 4) {
            this.myFunction();
        }

        http.send(null);  
    }

    myobject.prototype.myFunction = function() {
    alert("it "+this.val);
}

2 个答案:

答案 0 :(得分:2)

只需将父对象附加到xhr对象,如下所示:

http.parent = this; // Append it here
http.onreadystatechange = function ajaxResponse()
{
    if (http.readyState == 4)
        alert(this.parent.value) // Access it here
}

答案 1 :(得分:1)

ajaxResponse是父函数中的一个函数,它在javascript中称为闭包。当闭包使用在其父函数中定义的变量时,该变量不能从内存中销毁,而父函数则完成执行。 所以,定义一个像这样的临时变量:

var objTmp = this;

然后你可以在ajaxResponse中使用这个变量objTmp。 或者你可以这样做:

http.onreadystatechange = (function(objTmp){
                         return 
                             function ajaxResponse{alert(objTmp.value)}
                       })(this)