@ Бармар очень хорошо объяснил, я просто добавляю больше деталей
В вашем методе объекта report
this
in this.k
указывает на employee
объект, и вы получаете Undefined
, потому что employee
не имеет свойства с именем k
. Вместо этого вы должны использовать this[k]
.
И в te l oop за пределами объекта
for (k in employee){
alert(this.k+ " is " +employee[k])
}
this
в this.k
указывает на глобальный объект Window
Фактически ваш код is
for (var k in employee){
alert(this.k+ " is " +employee[k])
}
k
станет глобальной переменной. this.k
совпадает с window.k
или k
Кстати: вы должны использовать const / let и use strict
для более ясного понимания вашей переменной