【问题标题】:Javascript object constructor jQuery getJSON setting property failsJavascript对象构造函数jQuery getJSON设置属性失败
【发布时间】:2013-12-10 01:05:03
【问题描述】:

我正在尝试创建一个 Javascript 对象,其中构造函数使用 $.getJSON(); 使用回调函数设置数据属性

我是 Javascript 新手,最终想出了这个,但是当我执行 getData() 时,我不断收到 undefined

任何指针都会很棒,并且不想使用async: false

// Class
function DS(url) {

    // Variable
    this.data = undefined;

    // Constructor
    this.init = function(that, url) {
        var self = that;
        return $.getJSON(url, function(data) {
            self.setData(data);
        });
    }(this, url)

    // Callback / Setter
    this.setData = function(data) {
        this.data = data;
        return this;
    }

    // Getter
    this.getData = function() {
        return this.data;
    }
};

var ds = new DS("/your/awesome/endpoint.json");
console.log(ds.getData()); // gives undefined

【问题讨论】:

    标签: javascript jquery json oop


    【解决方案1】:

    $.getJSON是一个异步函数,你的ds.getData()$.getJSON的回调函数之前调用,你需要在回调中移动函数ds.getData()

    this.init = function(that, url) {
        var self = that;
        return $.getJSON(url, function(data) {
            self.setData(data);
            console.log(self.getData()); // Here is the fix
        });
    }(this, url)
    

    小提琴:http://jsfiddle.net/unBjJ/2/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-08
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多