javascript - 如何在 JavaScript 中使用对象数组

标签 javascript arrays object

我正在尝试用 JavaScript 做一些工作,并且对这门语言很陌生,但对编程语言还不是。

class Key{
    constructor(nm, keydata)    {
        var name = nm;
        var data = keydata;
    }
}

var KeySet = [];
for (i=0; i<5; i++){
    KeySet.push(new Key("item " +   i, "some data for " + i));
}

for (i=0; i<5; i++){
    console.log(i,KeySet[i].name," ->",KeySet[i].data)
}

我在控制台得到这个:

0 undefined -> undefined 
1 undefined -> undefined 
2 undefined -> undefined 
3 undefined -> undefined 
4 undefined -> undefined
  1. 我什至可以构建一个对象数组吗?
  2. 如果是这样,上面的内容有什么问题吗?最好的方法是什么?
  3. 我是否必须执行诸如将数组项内容转换为 Key 对象之类的操作才能使用它?怎么办?

最佳答案

你就快到了!结果是未定义,因为构造函数在其局部作用域中声明变量,而不是将这些变量定义为实例变量。

要定义实例变量,您需要使用 this 关键字绑定(bind)它们。请参阅下面的工作示例:

class Key {
  constructor(nm, keydata) {
    this.name = nm;
    this.data = keydata;
  }
}

var KeySet = [];

for (i = 0; i < 5; i++) {
  KeySet.push(new Key("item " + i, "some data for " + i));
}

for (i = 0; i < 5; i++) {
  console.log(i, KeySet[i].name, " ->", KeySet[i].data)
}

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

相关文章:

php - 数组创建德语问题

多个目标文件中的 C++ 模板和编译

Java 最好的设计是对象可以不同,但​​做的事情是一样的

javascript 元素 ":last"混淆

javascript - Google Maps API,通过循环创建带有信息窗口的多个标记的问题

javascript - 如何在应用程序中注入(inject)/加载 Angular 指令

java将数组不同为特定值

javascript - 如果对象在包含多个对象的数组中,如何检查 JavaScript?

r - 在 renderPlot 之外的 Shiny 中为 renderTable 提供一个对象

javascript - 如何在通过 NPM 分发时管理 React 组件(Redux、CSS)的自定义方面