我正在尝试使用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




我什至可以建立一个对象数组吗?
如果是这样,那么上面有什么问题?什么是最好的方法?
我是否需要执行类似将数组项内容转换为Key对象才能使用的任何操作?怎么样?

最佳答案

你快到了!结果为undefined,因为构造函数在其局部范围内声明变量,而不是将这些变量定义为实例变量。

要定义实例变量,您需要使用this关键字绑定那些实例变量。请参见下面的工作示例:



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)
}

10-05 21:02
查看更多