空的初始化javascript对象包含许多属性和函数

空的初始化javascript对象包含许多属性和函数,javascript,angular,Javascript,Angular,我用的是角度8。在一个组件中,我有这个函数 private build(obj1: object, obj2: object) { const result: object = {}; console.log('begin result'); console.log(result); console.log('end result'); 在firebug中,我可以看到以下输出 正如您所看到的,在通常为空的对象中有属性和函数。为什么?我可以告诉你,这些属性

我用的是角度8。在一个组件中,我有这个函数

  private build(obj1: object, obj2: object) {
    const result: object = {};
    console.log('begin result');
    console.log(result);
    console.log('end result');
在firebug中,我可以看到以下输出

正如您所看到的,在通常为空的对象中有属性和函数。为什么?我可以告诉你,这些属性是我在这个组件中使用的FormGroup的属性

  private build(obj1: object, obj2: object) {
    const result: object = {};
    console.log('begin result');
    console.log(result);
    console.log('end result');
    for (const property in obj1) {
      console.log('property in obj1');
      console.log(property);
      console.log(result);
      result[property] = obj1[property];
      console.log(result);
    }
    for (const property in obj2) {
      console.log('property in obj2');
      console.log(property);
      if (!obj1.hasOwnProperty(property)) {
        if (obj2.hasOwnProperty(property) && obj2[property]) {
          result[property] = obj2[property];
        } else {
          result[property] = '';
        }
        console.log(result);
      }
    }
    return result;
  }

我从未使用过Firebug,但我假设它正在保存对
结果
对象的引用,而不是为了记录而克隆它,因此在
控制台.log
之后添加的所有属性在日志中展开时仍会显示出来。要检查,请尝试:

console.log('beginresult');
console.log(Object.keys(result));
console.log(“最终结果”);

这将及时向您显示该实例中附加到
result
的所有键。

在3
控制台.log
语句之后,您是否对
result
执行其他操作?如果是这样的话,我们能看到代码吗?嗨,康纳斯范,我用相关信息更新了帖子