为什么功能需要参数

时间:2017-01-11 16:42:21

标签: javascript xml parameters

我正在努力学习和理解XML。我在W3schools上找到了这个例子。 函数获取参数xml的部分。 我不明白为什么它需要这个参数是否有人可以向我解释这个?

function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    myFunction(this);
    }
  };
  xhttp.open("GET", "cd_catalog.xml", true);
  xhttp.send();
}
function myFunction(xml) {
  var i;
  var xmlDoc = xml.responseXML;
  var table="<tr><th>Artist</th><th>Title</th></tr>";
  var x = xmlDoc.getElementsByTagName("CD");
  for (i = 0; i <x.length; i++) { 
    table += "<tr><td>" +
    x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +
    "</td><td>" +
    x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
    "</td></tr>";
  }
  document.getElementById("demo").innerHTML = table;
}

1 个答案:

答案 0 :(得分:0)

xhttp.onreadystatechange = function() { 
if (this.readyState == 4 && this.status == 200) { 
console.log(this);
     } 
};

this 关键字指的是运行某个函数的上下文。它可能是一个Object,通常是它的Window。 实例

function hi(){
  alert(this);//window
}
function person(){
this.hi=hi;
}
Mark=new Person();
Mark.hi();//mark

在您的示例中,这是xml对象。例如,您可以访问this.responseXML。 但是这并不像其他语言那样:

function inyourxmlcallback(){
  alert(this);//xml
  hi();//window
 }

函数调用不会自动将其绑定到被调用的函数。您需要手动完成:

hi.call(this);//xml object

W3学校只是将上下文作为变量传递,以便稍后使用。 例如:

var test=this;
alert(test);//window