下面有2个AJAX请求:
function sFunction(str) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "some.php?q=" + str, true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("ajax").innerHTML = this.responseText;
}
}
}
和
function sFunction(str) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "some.php?q=" + str, true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("ajax").innerHTML = this.responseText;
}
}
}
两者都有效,唯一的区别是使用this
是否引用xmlhttp
。在这种特殊情况下,我的问题是:
需要一些专业意见。谢谢。
答案 0 :(得分:3)
在这种情况下,两者都不是真正有利的,因为它们都指向同一个对象。
使用this
的一个可能的优点是你可以在多个AJAX对象上重用该函数,就像这样。
function rsc() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("ajax").innerHTML = this.responseText;
}
}
xmlhttp1 = new XMLHttpRequest();
xmlhttp1.open("GET", "some.php?q="+str, true);
xmlhttp1.send();
xmlhttp1.onreadystatechange = rsc;
xmlhttp2 = new XMLHttpRequest();
xmlhttp2.open("GET", "some.php?q="+str, true);
xmlhttp2.send();
xmlhttp2.onreadystatechange = rsc;
你可以节省一些记忆并以这种方式工作,但在大多数情况下它会非常小。