数组obj属性在类构造函数中未定义

时间:2019-05-09 09:25:48

标签: angular typescript

我正在将对象数组(属性之一也是数组)传递给这样的类构造函数:

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

输出:

enter image description here

第二个日志(或任何尝试访问数组属性的操作)始终为undefined

2 个答案:

答案 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);

“ ...”将创建对象的副本,并按值(而不是引用)发送它。