Пытается прояснить некоторые основы прототипа наследования.Свойство, установленное в конструкторе, переопределяет свойство на прототипе
function thirdSampleObject(){
this.first_var = 3;
this.update = function(){"Hi I am a function"};
}
var thirdClass = new thirdSampleObject();
var fourthClass = new thirdSampleObject();
thirdClass.first_var = 5;
fourthClass.first_var = 7;
console.log(thirdClass.first_var); //returns 5
console.log(fourthClass.first_var); //returns 7
thirdSampleObject.prototype.first_var = 10;
console.log(thirdClass.first_var); //returns 5 "protectected" within it's own instance of the object
console.log(fourthClass.first_var); //returns 7 "protectected" within it's own instance of the object
var fithClass = new thirdSampleObject();
console.log(fithClass.first_var); //returns 3 ? Wouldn't this return 10 at this point?`
Я ожидал бы console.log(fithClass.first_var)
вернуться 10, так как я переписал значение в прототипе. Однако возвращает число, установленное в «оригинальном» определении прототипа. Почему мы пытаемся обернуть голову.
В конструкторе вы устанавливаете свойство экземпляра. Это свойство всегда будет заслонять свойство, установленное в прототипе. – Sirko
Вы должны задать свой вопрос для значимого названия, например, «свойство, установленное в конструкторе, переопределяет свойство на прототипе». –
Назначение в конструкторе не имеет ничего общего с прототипом; значение 'this' в конструкторе - это новый объект, а не прототип. – Pointy