Javascript—数组';类别';

Javascript—数组';类别';,javascript,Javascript,我试图创建一个“类”数组,如下所示: function Main(initURL){ var item_array = []; this.initURL = initURL; function construct() { $.ajax({ url: initURL, dataType: 'json', success: function(data){

我试图创建一个“类”数组,如下所示:

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);
}
函数主(initURL){
变量项_数组=[];
this.initURL=initURL;
函数构造(){
$.ajax({
url:initURL,
数据类型:“json”,
成功:功能(数据){

for(var i=0;i不要在
中使用
for…来迭代数组

for(var i=0; i < item_array.length; i++){
    console.log(item_array[i].name);
}
for(变量i=0;i

不要在
中对…使用
来迭代数组

for(var i=0; i < item_array.length; i++){
    console.log(item_array[i].name);
}
for(变量i=0;i

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

for(var i = 0; i < item_array.length; i++) {
    console.log(item_array[i].name);
}
for(变量i=0;i
A
for..in
循环键,而不是值。将其更改为:

for(var i = 0; i < item_array.length; i++) {
    console.log(item_array[i].name);
}
for(变量i=0;i
问题在于,您在“Item()”中调用“init()”函数时没有任何上下文对象。因此,
不是您想要的对象。请尝试以下更改:

function Item(data) {
  var item = this;
  function init(data) {
    item.id = data.pk;
    item.name = data.fields.name;
  }
  init(data);
}
现在,我不知道为什么您首先要这样编写函数;这个小“init()”函数实际上没有做任何有用的事情。它可能只是:

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

这也行。

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

function Item(data) {
  var item = this;
  function init(data) {
    item.id = data.pk;
    item.name = data.fields.name;
  }
  init(data);
}
现在,我不知道为什么您首先要这样编写函数;这个小“init()”函数实际上没有做任何有用的事情。它可能只是:

function Item(data) {
  this.id = data.pk;
  this.name = data.fields.name;
}
这也行