如何在Javascript中调用类中另一个方法内的方法?

时间:2017-09-30 16:02:07

标签: javascript class methods

如何正确调用JavaScript类中另一个方法中的方法?

导出类XMLLoader {

constructor(){



}

// Processes the XML request, i.e retrieves the relevant data etc.
 processXMLReq(xhttp){

    let resultXML = xhttp.responseXML;
    let resultText = xhttp.responseText;


    console.log("The result is: " + resultXML);
    console.log("The result is: " + resultText);

    let x = resultXML.getElementsByTagName("road")[0].childNodes[0].nodeValue;


    console.log("The first 'road' node value is: " + x);

}

loadXMLDoc(url){

    let xhttp = new XMLHttpRequest();

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

    };

    xhttp.open("GET", url, true);       // the argument "true" means that the request will be executed in async
    xhttp.send();

}

};

正如您所看到的,我正在尝试在loadXMLDoc()中调用processXMLReq(),为什么这不起作用。只有我让它工作的方法是将processXMLReq放在构造函数中并使其成为静态。该类应该是搜索栏类的实用程序类。我怎样才能这样做,以便我可以在loadXMLDoc中调用processXMLReq。因为在我的搜索栏类中,我只想做这样的事情:

componentDidMount(){

  //  let xmlLoader = new XMLLoader();

    let xmlLoader = new XMLLoader();

    xmlLoader.loadXMLDoc('someURL', this.processXMLReq);


}

2 个答案:

答案 0 :(得分:2)

Static methods aren't accessed with 'this'可以从构造函数或类名:

访问它们
XMLLoader.processXMLReq(data);

XMLLoader.constructor.processXMLReq(data);

答案 1 :(得分:0)

XMLLoader。 processXMLreq(xhttp)因为它是一个静态方法