2017-01-11 4 views
1

私はXMLを学び理解しようとしています。私はこの例をW3スクールで見つけました。 関数がパラメータ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; 
} 
+0

これは機能が動作しているためです。その応答の中にXML自体があります。 –

+0

パラメータは関数に入る前に満たされていますか?それは何が満たされているのでしょうか? – user3356007

+0

myFunction.call(this)も機能します(xmlをこれに置き換えます)。それは、xml、むしろjsの基本では何もするつもりはありません... –

答えて

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

このキーワードは、特定の機能が実行されている状況を指す。これは可能性があるオブジェクト、通常、そのウィンドウによって。 例

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

例では、これはxmlオブジェクトです。たとえば、this.responseXMLにアクセスできます。 しかし、JS、このdoesntのは、他の言語のように振る舞う:

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

関数呼び出しは自動的に呼び出される関数にこれをバインドいけません。

hi.call(this);//xml object 

W3の学校は、変数を後で使用するために単純にコンテキストを渡します。 例:

var test=this; 
alert(test);//window 
関連する問題