пустой инициализированный javascript объект содержит множество свойств и функций - PullRequest
0 голосов
/ 27 марта 2020

Я использую angular 8. В компоненте у меня есть эта функция

  private build(obj1: object, obj2: object) {
    const result: object = {};
    console.log('begin result');
    console.log(result);
    console.log('end result');

В firebug я вижу следующий вывод

enter image description here

enter image description here

Как видите, в обычно пустом объекте есть свойства и функции. Почему ? Я просто могу сказать вам, что это свойства 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;
  }

1 Ответ

1 голос
/ 27 марта 2020

Я никогда не использовал Firebug, но я предполагаю, что он сохраняет ссылку на объект result, а не клонирует его с целью ведения журнала, и поэтому все свойства, которые добавляются после console.log, будут по-прежнему отображается при расширении в журналах. Чтобы проверить, попробуйте:

console.log('begin result');
console.log(Object.keys(result));
console.log('end result');

Это покажет вам все ключи, прикрепленные к result в данный момент времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...