我一直在试图弄清楚如何使用原型(prototype)来初始化对象,以便使用全局变量来转义,这是我第一次了解到的 here 。我开始实现在接受的答案中找到的我自己的代码版本。
function XML_Data() {
this.data = null;
}
XML_Data.prototype = {
GetXML: function() {
$.ajax({
type: "GET",
url: "questions.xml",
dataType: "xml",
success: function(xml) {
this.data=xml;
} //close success
});//close AJAX
},
UseXML: function() {
alert(this.data)
}
};
(我的脚本实现)
<小时/>但是,我遇到了一个问题。当我使用这段代码运行此处显示的函数时:
var data = new XML_Data();
data.GetXML();
data.UseXML();
我收到一条警告,提示“null”。我已经浏览过这些代码大约十几次了,但由于这是我第一次使用 Javascript,所以很明显我错过了一些东西。你能指出这一点吗?
谢谢,埃利奥特·博纳维尔。
最佳答案
值得注意的是
var data = new XML_Data();
data.GetXML(); //This will run the ajax request
data.UseXML(); //This will most likely run before the ajax request is finished.
在 Jquery 中发布事件可能会起作用,但我还没有测试过这段代码。
function XML_Data() {
this.data = null;
}
XML_Data.prototype = {
GetXML: function() {
$.ajax({
type: "GET",
url: "questions.xml",
dataType: "html",
success: function(xml) {
this.data=xml;
$(window).trigger("myAjaxEvent");
} //close success
});//close AJAX
},
UseXML: function() {
alert(this.data)
}
};
$(document).ready( function () {
var data = new XML_Data();
$(window).bind("myAjaxEvent", function () {
data.UseXML();
});
data.GetXML();
});
关于javascript - 使用对象正确替换全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210796/