Почему каждый объект JS имеет одно неопределенное свойство

let obj = {a:'a',b:'b'};
for (let p in obj){
   console.log(p);
}

Выход:

a 
b
undefined

Что случилось с неопределенным свойством?


person Juraj Petrik    schedule 26.07.2015    source источник
comment
Это не свойство его return of function, которое developer tools печатает   -  person vinayakj    schedule 26.07.2015
comment
Ну, я чувствую себя немым прямо сейчас. Если вы опубликуете это как ответ, я могу принять это   -  person Juraj Petrik    schedule 26.07.2015
comment
нет проблем .. ни один вопрос не глуп, пока вы не знаете ответ, также забавный факт, что инструменты разработчика печатают возвращенный ответ в случае AJAX, даже если вы утешили его вне функции обратного вызова.   -  person vinayakj    schedule 26.07.2015


Ответы (1)


Это не свойство, это возврат функции, который печатает инструменты разработчика.

Пример:

console.logger = function(p){
           console.log(p);
           return "logged"
      }
var obj = {a:'a',b:'b'};
for (var p in obj){
   console.logger(p);
}

a          // logs the property
b          // logs the property
"logged"   // logs the return of logger function, undefined in case nothing's returned
person vinayakj    schedule 26.07.2015