代码之家  ›  专栏  ›  技术社区  ›  Gargoyle

打印对象提供的值与打印该对象的属性不同

  •  0
  • Gargoyle  · 技术社区  · 6 年前

    在我的打字脚本文件中有一个奇怪的情况 console.info 调用为每个对象显示单独的值 overage :

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

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

    rows: UsageDisplayData[];
    
    export interface UsageDisplayData {
        id: number;
        overage: number;
        // A bunch of other properties
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Ryan Cavanaugh    6 年前

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

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

    enter image description here