JS对象不起作用

时间:2015-07-27 18:34:28

标签: javascript jquery object

我有一个相当复杂的对象,并且包含了一个简化版本(取出了不必要的函数)。当我发起它并且我不知道为什么时它不起作用。 Safari告诉我:[Error] TypeError: undefined is not an object (evaluating 'this.data.steps[index]') 但我不知道为什么。这是代码:



function Stepper (url) {
    this.index = 0;
    this.url = url;
    this.stepsn = 0;
    this.data = {}
    this.init = function () {
        var XHR = $.getJSON(this.url, function (json) {
            this.data = json;
            this.stepsn = this.data.steps.length;
        });
    };
    this.getstep = function (index) {
        return this.data.steps[index];
    };

    this.init();
}
\\Instantiation
var url = "lesson.json"; //lession.json is valid(I checked)
var stepper = new Stepper(url);




谢谢你的帮助,如果你这样做的话。

Safari 8.0.7  Included jquery 1.11.3

1 个答案:

答案 0 :(得分:0)

您在评论中使用的正斜杠是语法错误。此外,您的steps对象中没有this.data密钥,这就是该行引发错误的原因。

我还在.getJSON调用中使用了bind,因此您可以参考Stepper对象。请参阅以下固定代码:



function Stepper (url) {
    this.index = 0;
    this.url = url;
    this.stepsn = 0;
    this.data = {}
    this.init = function () {
        var XHR = $.getJSON(this.url, function (json) {
            this.data = json;
            this.stepsn = this.data.steps.length;
        }).bind(this);
    };
    this.getstep = function (index) {
        return this.data.steps[index];
    };

    this.init();
}
//Instantiation
var url = "lesson.json"; //lession.json is valid(I checked)
var stepper = new Stepper(url);