首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript -“classes”的数组

Javascript -“classes”的数组
EN

Stack Overflow用户
提问于 2011-05-24 00:47:36
回答 3查看 11.1K关注 0票数 1

我正在尝试创建一个“classes”数组,如下所示:

代码语言:javascript
复制
function Main(initURL){

    var item_array = [];

    this.initURL = initURL;

    function construct() {
        $.ajax({ 
            url: initURL,
            dataType: 'json',
            success: function(data){
                for(var i=0;i<data.length;i++){
                    var item = new Item(data[i]);
                    item_array.push(item);
                }
                init();
            }
        });
    }

    function init() {
        setInterval(update, 1000);
    }

    function update() {
        for(var item in item_array){
            console.log(item.name);
        }
    }

    construct();
}

function Item(data) {

    var dirty = false;

    function init(data) {
        this.id = data.pk;
        this.name = data.fields.name;
    }

    init(data);
}

当我试图打印出项目名称时,我得到了“未定义”。还有比这更多的东西吗?Data.field.name肯定已经设置好了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-24 00:51:41

for..in循环通过键循环,而不是值循环。将其更改为:

代码语言:javascript
复制
for(var i = 0; i < item_array.length; i++) {
    console.log(item_array[i].name);
}
票数 3
EN

Stack Overflow用户

发布于 2011-05-24 00:51:22

不要使用for... in来迭代数组。

代码语言:javascript
复制
for(var i=0; i < item_array.length; i++){
    console.log(item_array[i].name);
}

https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in#Description

票数 3
EN

Stack Overflow用户

发布于 2011-05-24 00:52:19

问题是您在调用"Item()“中的"init()”函数时没有使用任何上下文对象。因此,this不是您想要的对象。尝试此更改:

代码语言:javascript
复制
function Item(data) {
  var item = this;
  function init(data) {
    item.id = data.pk;
    item.name = data.fields.name;
  }
  init(data);
}

现在,我不确定为什么要以这种方式编写函数;这个小的"init()“函数实际上并没有做任何有用的事情。它可能只是:

代码语言:javascript
复制
function Item(data) {
  this.id = data.pk;
  this.name = data.fields.name;
}

这也是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6100330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档