单身模式javascript

Gol*_*ize 3 html javascript singleton

我是javascript的新手,我发现我不知道一种适当的方法来重复获取同一个变量的实例.我用这个打开一个Xml文件:

function testXML(){
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","../res/data.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
return xmlDoc;
}
Run Code Online (Sandbox Code Playgroud)

我添加了返回,因此我可以选择该xml文件并进行一些搜索以加载一些包含数据的列表.问题是,每次我想拿xml文件读取一些数据我都会调用这个方法,这不仅会返回xml,还有IF/Else和openfile等等...我想这不是那个合适.

那么我怎样才能创建一个只返回xml文件的方法,所以我只能打开一次?此外,打开xml文件并将其加载到变量中是安全的,比如在index.html中,然后导航到其他htmls而不会丢失该变量值(xml文件)?

谢谢!!

Cer*_*rus 5

var xml;

function testXML(){
    if(!xml){
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        } else {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET","../res/data.xml",false);
        xmlhttp.send();
        xml = xmlhttp.responseXML;
    }
    // return xml; // You can optionally also return the xml, but it'd be assigned to the variable already, any way.
}
Run Code Online (Sandbox Code Playgroud)

调用该函数一次,您就可以使用该xml变量.

或者,如下所示,只需testXML()在代码中使用而不是变量,并取消注释返回.
这可以确保您不会遇到未定义的xml.