结合AJAX负载Getter和Setter
-
26-09-2019 - |
题
我已经和getter和setter工作,以避免使用全局变量的前景。不过,我碰到的一个问题。当我试图运行一个AJAX调用,而不是下面的代码,这与整型变量工作正常,抛出异常。为什么会这样有人能解释一下吗?
function Object_XML() {
me = this;
me.xml = null;
}
Object_XML.prototype = {
getXML: function() {
return me.xml
},
setXML: function(data) {
me.xml = data;
},
loadXML: function() {
$.ajax({
type: "GET",
url: "questions.xml",
dataType: "xml",
success: function(xml) {
me.setXML(xml);
} //close success
});//close AJAX
}//close setXML
};
$(document).ready(function() {
var data = new Object_XML();
alert("This is an " + data.getXML());
data.setXML();
alert("This is an " + data.getXML());
});
谢谢,埃利奥特邦纳维尔
解决方案
您只需使用me = this;
你刚才提出me
不使用var
全局变量否定你有getter和setter私有变量的使用。 (使用VAR没有定义任何变量被附接到所述全局命名空间)
在你的情况,因为你可以只使用this
,避免me
作为个人在同一对象范围内的工作,我认为这是混淆。但是,如果你想坚持这一模式,使用var me = this;
您的例子是真的不清楚,哪里错误发生的呢?你打电话不带参数data.setXml()
,所以me.xml
将赌注设置为undefined
。这是可以预料的,如果你没有传递到方法中。
此外,还要注意的是,由于您的通话异步性质,如果你做的是这样的:
data.loadXml();
console.log("data.getXML();", data.getXML()); // would be undefined
data.getXML()在那一刻,仍然会因为很可能你的异步调用还没有恢复,因此没有设置你的对象的XML属性未定义。
不隶属于 StackOverflow