我正在将对象数组(属性之一也是数组)传递给这样的类构造函数:
this.timelapse = new timelapse(this.tlitems);
课程:
export class timelapse {
items: timelapseitem[];
meantime: number;
constructor(i: timelapseitem[]) {
this.items = i;
console.log(i[0]);
console.log(i[0].events);
}
}
输出:
第二个日志(或任何尝试访问数组属性的操作)始终为undefined
答案 0 :(得分:0)
this.tlitems
是对象引用。
在此对象中,events
是对数组的引用。
然后将这个对象应用于您的class属性:它们具有相同的内存引用。
这意味着如果您在代码中的任何位置更新了第一个对象,则类属性也会被更新。
这可能是您正在发生的事情。
此外,请记住,控制台在给定时间记录日志,并且不会自我更新。
为避免此类问题,您可以尝试查找更新事件的内容,或者可以复制内存引用:
constructor(i: timelapseitem[]) {
this.items = [...i];
console.log(i[0]);
console.log(i[0].events);
}
答案 1 :(得分:0)
尝试此代码:
this.timelapse = new timelapse(...this.tlitems);
“ ...”将创建对象的副本,并按值(而不是引用)发送它。