将对象传递给onreadystatechange
我希望AJAX回调触发myFucntion中的alert(),它的工作原理是如何在ajaxResponse中引用myobject对象?将对象传递给onreadystatechange
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);
}
ajaxResponse是在父函数的功能,这就是所谓的在JavaScript关闭。当闭包使用父函数中定义的变量时,该变量不能从内存中销毁,而父函数完成执行。 所以,定义一个临时变量是这样的:
var objTmp = this;
然后你就可以在ajaxResponse使用这个变量objTmp。 或者你可以这样做:
http.onreadystatechange = (function(objTmp){
return
function ajaxResponse{alert(objTmp.value)}
})(this)
虽然这会创建一个全局变量,但会破坏对象的点。 – user1209203 2012-02-14 15:19:00
父对象只是追加到XHR对象,像这样:
http.parent = this; // Append it here
http.onreadystatechange = function ajaxResponse()
{
if (http.readyState == 4)
alert(this.parent.value) // Access it here
}
这已经工作,但只适用于 myobject.prototype.myFunction = function(){ alert(“it”+ this.val); } 如果然后做,如果(http.readyState == 4){this.myObject.myFunction();} myobject.prototype.myObject = { 回调:myFunction的(){ 警报( “它” +这.VAL); } } 它分崩离析。 – user1209203 2012-02-14 15:19:50
你的问题是什么? – sinsedrix 2012-02-14 14:07:58
我的问题是如何在ajaxResponse中调用this.value并引用包含此代码的对象中的值。 – user1209203 2012-02-14 14:37:10