function Car(color) {
this.color = color;
}
const bmw = new Car('white');
Car.prototype.gear = 1;
console.log(bmw); // {color: "white"} -> свойства gear у объекта нет, оно в прототипе
++bmw.gear // по идеи меняем свойство у прототипа
console.log(bmw); // {color: "white", gear: 2} -> а вот теперь оно есть у объекта. WTF !?
console.log(Car.prototype.gear); // 1
console.log(bmw.gear) // будет 1, т.к. сначала идет обращение в тело объекта, потом в его прототип.
console.log(bmw); // На этом этапе gear в прототипе.
++bmw.gear // при изменении gear ОБЪЕКТА, свойство наследуется из прототипа и присваивается непосредственно телу объекта.
console.log(bmw.gear); // 2 - это bmw.gear
console.log(Car.prototype.gear); // 1 - это прототип.