Вы можете использовать прототип для значений по умолчанию для объекта и сохранять память. Если впоследствии вы не затеняете свойство позже (назначьте ему новое значение в экземпляре), все экземпляры будут иметь один и тот же указатель на значение.
Если же вы наверняка собираетесь присвоить ему значение, то лучше определить его в теле конструктора, как this.myval
Здесь сложная часть присвоения значений по умолчанию для прототипа; вам нужно назначить новое значение для изменения конкретного экземпляра. Значения объектов можно манипулировать путем вызова функций на них или переопределения свойств. Когда вы сделаете это, то значение по умолчанию для всех экземпляров изменить:
var Person=function(){};
Person.prototype.teeth=[0,1,2,3];
Person.prototype.legs={left:1,right:1};
var ben=new Person();
var betty=new Person();
ben.teeth.splice(2,1);//ben looses a tooth
//when ben looses a tooth like that betty looses it too
console.log(betty.teeth);//[1,2,3] poor betty
//now poor betty has an accident
betty.legs.right=0;
//looks like ben looses it too
console.log(ben.legs);//{left:1,right:0}
//I don't feel sorry for ben though because
//he knocked out betty's tooth
Лучше не начинать новый экземпляр для наследования, вы можете использовать Object.create или вспомогательную функцию, чтобы установить наследование без создания экземпляра , Все о наследовании, прототипе, переопределении и вызове super здесь: https://stackoverflow.com/a/16063711/1641941
Это то же самое отличие, что и определение свойств прототипа против каждого экземпляра. Дубликат [Использование «прототипа» против «этого» в Javascript?] (Http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript) Используете ли вы «новый Экземпляр программиста для прототипа или нет (простой объект) не имеет никакого значения. – Bergi
Кроме того, [не используйте 'new' для наследования] (http://stackoverflow.com/questions/12592913/what-is-the-reason-to-use-the-new-keyword-here). – Bergi