javascript - 在 JavaScript 类中使用数组

标签 javascript arrays

我定义了一个 JavaScript 类,如下所示:

function Item() { 
  this.init(); 
} 

Item.prototype = { 
  id: null, 
  name: '', 
  description: '', 
  init: function () { 
    this.id = "1"; 
  } 
};

我想添加一个名为“logs”的属性。我希望这个属性是其他类实体的数组。如何将这种数组定义为 Item 类的属性?如何将实体添加到该数组?本来,我想我可以添加“this.logs = {};”在我的初始化函数中。然后在其他地方的代码中,我尝试了以下操作:

Item i = new Item();
i.logs.push(NewLog());

但是,push 函数会出现错误:“无法调用未定义的方法‘push’”

我做错了什么?

最佳答案

logs 尚未初始化。将其添加到构造函数中(而不是添加到原型(prototype)中,因为该数组将被 Item 的所有实例共享):

function Item() { 
  this.init();
  this.logs = []; // Not {}:   [] is equivalent to new Array(), and
}                 //           {} is equivalent to new Object() (not an array)

另外,JavaScript != Java。

var i = new Item() // instead of Item i = new Item();

关于javascript - 在 JavaScript 类中使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9413584/

相关文章:

Javascript 仅在从特定目录查看时才处于事件状态

ruby - 如何从 Ruby 中的数组中获取第一个、第二个和第五个元素?

ruby-on-rails - Ruby - 通过循环创建按位置分组的数组数组

javascript - tinyMCE 模糊事件

javascript - 处理对 YouTube New Look 的评论

javascript - P5绕圈移动物体未能摧毁旧物体

javascript - 谷歌扩展 : (probably) misunderstanding with content scripts

c - 运行时间太长(可能存在循环泄漏),C

java - 如何使用数组内部的整数作为方法的参数。 (测试员)

arrays - 尝试将对象映射器模型转换为数组