【问题标题】:Printing object gives different value than printing a property of that object打印对象的值与打印该对象的属性不同
【发布时间】:2019-01-04 19:53:17
【问题描述】:

我的打字稿文件中有一个奇怪的情况,这两个 console.info 调用显示 overage 的不同值:

this.rows[index].overage = 17;
console.info(this.rows[index].overage);
console.info(this.rows[index]);

第一个打印输出显示预期值 17。第二个打印输出显示整个对象,显示超额的旧值 90。这怎么可能?

Rows 是这样定义的:

rows: UsageDisplayData[];

export interface UsageDisplayData {
    id: number;
    overage: number;
    // A bunch of other properties
}

【问题讨论】:

    标签: javascript typescript interface


    【解决方案1】:

    如果没有 MVCE,很难准确地说出发生了什么,但开发控制台中的扩展视图通常是“实时”视图,因此会显示最新值。示例:

    let obj = { m: 17 };
    console.info(obj.m);
    console.info(obj);
    obj.m = 90;
    

    【讨论】:

    • 是的,这就是正在发生的事情。您可以使用console.log(JSON.parse(JSON.stringify(myObj))) 记录对象在给定时间的状态。
    猜你喜欢
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2020-08-28
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多