javascript - 使用对象正确替换全局变量

标签 javascript html object

我一直在试图弄清楚如何使用原型(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/

相关文章:

javascript - if 11pm 调用函数更改表单输入值

javascript - 有什么方法可以设置 <select> 下拉选项容器和元素的样式吗?

javascript - Phaser和Web Audio API-定向 Sprite

当流中断然后重新启动时,HTML5 Video 元素不会恢复直播

javascript - 我可以在 javascript 中调用由同一构造函数创建的其他对象上的方法吗?

javascript - 增加无序列表中图像的可点击区域

javascript - 您知道为什么我的代码不起作用并且我在单击时无法获取数字吗

javascript - Jquery 平滑滚动到 DIV - 使用链接中的 ID 值

javascript - 点击对象执行某些功能

javascript - 如何在 Javascript 中获取对表中同一行其他列上另一个对象的引用?