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