Измененный код ниже показывает, в чем проблема:
function Car(){
this.color = "red";
this.type = "sedan";
this.price = "100,000";
this.model = "2020";
}
Car.prototype.test = function() {};
let myCar = new Car();
var prop ;
for (prop in myCar) {
if (myCar.hasOwnProperty(prop)){
console.log(prop + " : " + myCar[prop])
}
};
for (prop in myCar) {
console.log(prop + " : " + myCar[prop])
};
Вывод:
color : red
type : sedan
price : 100,000
model : 2020
color : red
type : sedan
price : 100,000
model : 2020
test : function() {}
В последней итерации второго цикла, функция-прототип (или методCar
class) отображается, хотя это не свойство, но оно принадлежит Car
.
Я считаю, что лучший способ перебрать свойства объекта - использовать Object.keys
:
Object.keys(myCar).forEach(prop => {
console.log(prop + " : " + myCar[prop]);
});