javascript - JS 对象不工作

标签 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

最佳答案

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

我还在您的 .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);

关于javascript - JS 对象不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31660673/

相关文章:

java - 创建带有填充变量且没有任何 setter 或构造函数的对象

javascript - 我如何从这个 Jsonarray 中删除 T 和 Z

javascript - 检查一个键值是否已经存在于angularjs中的多维数组对象中

jquery - 使用 JQuery 编写背景变化的游戏时遇到的问题

jquery - Div 展开按钮可用于更长的文本,但只有一个按钮

javascript - 窗口调整大小事件在 ie7 中不断触发

javascript - 改变函数的值还是与原型(prototype)保持一致?

不同事件类型上的 Javascript 事件 stopPropagation

javascript - AngularJS:将服务注入(inject) HTTP 拦截器(循环依赖)

带有条件的javascript过滤方法