当前位置:编程学习 > JS >>

关于ajax代码的一个小问题。《javascript入门经典》里面的。求高手解答,苦等。

function HttpRequest(url,fpCallback) { this.request=this.createXmlHttpRequest(); this.request.open("GET",url,true); var tempRequest=this.request; function request_readystatechange() { if (tempRequest.readyState == 4) { if (tempRequest.readyState == 200) { fpCallback(tempRequest.responseText); } else { alert("抱歉,服务器响应失败!"); } } } this.request.onreadystatechange=request_readystatechange; } 有些代码我没有粘贴到这里,跟我的问题没关系。我的问题是这里 var tempRequest=this.request; 然后后面的函数是对tempRequest的处理,而触发这个函数的是成员数据this.request。 那么在执行var tempRequest=this.request;这一步后,该tempRequest就不再变了对吗?那么这个触发函数还有什么作用呢? 求高手解答!
追问:您好!我想请问是不是javascript中把一个对象赋值为另一个对象,比如var a=new class();var b=a;然后在后面的操作中改变a就会改变b,即b是a的一个引用,b是a的别名?因为好像js里面的数组就是这样。但是我做实验,如果是普通数字变量的话,不会是引用,仅仅是等值赋值。某个改变不会影响到另一个。
难道js对对象的赋值处理和对一般的数据处理是不一样的?求解释。我拿数组对象就是两个一起感冒,var a=new array(),var b=a则改变b就会改变a,不行你试。
答案:tempRequest和this.request所指向的是同一个对象的,不再变的只是它的引用,但它引用的对象的成员readyState会变。
在上面代码中定义var tempRequest=this.request;是因为在事件处理函数中(触发函数)的作用域不是外层构造函数中的this了,而无法通过this.request的形式来访问request,因此定义一个局部变量tempRequest让处理函数使用,因为处理函数是一个闭包,它内部可以访问外层的局部变量
其他:tempRequest声明的是服务器对象。是一个对象,不是函数!! 

上一个:大家如何解决asp.net中Updatepanle局部更新造成的内部javascript、jquery绑定事件失效的问题。
下一个:如何将很多用javascript翻页的网页表格数据导入excel?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,