Javascript 为什么函数中需要参数

Javascript 为什么函数中需要参数,javascript,xml,parameters,Javascript,Xml,Parameters,我正在努力学习和理解XML。我在学校里找到了这个例子。 函数获取参数xml的一部分。 我不明白为什么它需要这个参数,有人能给我解释一下吗 function loadDoc() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this)

我正在努力学习和理解XML。我在学校里找到了这个例子。 函数获取参数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;
}
函数loadDoc(){
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
我的职能(本);
}
};
open(“GET”,“cd_catalog.xml”,true);
xhttp.send();
}
函数myFunction(xml){
var i;
var xmlDoc=xml.responseXML;
var table=“ArtistTitle”;
var x=xmlDoc.getElementsByTagName(“CD”);
对于(i=0;i
this关键字指的是某个函数正在运行的上下文。它可能由对象(通常是其窗口)执行。
例子

在您的示例中,这是xml对象。例如,您可以访问this.responseXML。 但这与其他语言中的行为不同:

function inyourxmlcallback(){
  alert(this);//xml
  hi();//window
 }
函数调用不会自动将其绑定到被调用的函数。您需要手动执行此操作:

hi.call(this);//xml object
W3学校只是将上下文作为变量传递给以后使用。 例如:

this关键字指的是某个函数正在运行的上下文。它可能由对象(通常是其窗口)执行。 例子

在您的示例中,这是xml对象。例如,您可以访问this.responseXML。 但这与其他语言中的行为不同:

function inyourxmlcallback(){
  alert(this);//xml
  hi();//window
 }
函数调用不会自动将其绑定到被调用的函数。您需要手动执行此操作:

hi.call(this);//xml object
W3学校只是将上下文作为变量传递给以后使用。 例如:


因为这是函数正在处理的响应。在该响应中是XML本身。所以参数在到达函数之前被填充?填充的是什么?myFunction.call(此)也起作用(用此替换XML)。它与xml无关,而是与js相关的基础知识。
onreadystatechange
处理程序获取响应并使用它调用
myFunction
。您可能需要退一步:“学习xml”和“学习JavaScript”之间有很大的区别。我们现在谈论的内容与XML无关——它是JavaScript及其异步编程模型。thx的帮助@DaveNewton!感谢它,因为这是函数正在处理的响应。响应中是XML本身。因此,参数在到达函数之前被填充?填充的是什么?myFunaction.call(this)也可以工作(用this替换xml)。它与xml无关,而与js基础无关。
onreadystatechange
处理程序获取响应并调用
myFunction
。您可能想退一步:“学习xml”和“学习JavaScript”之间有很大的区别。我们现在谈论的内容与XML无关——它是JavaScript及其异步编程模型。thx的帮助@DaveNewton!感谢
var test=this;
alert(test);//window