У меня есть вопрос относительно классического наследования против прототипического наследования. Я хотел посмотреть, что лучше?Usecase for Classical vs Prototypical
Предположим, у нас есть функция, называемая familyTree.
function familyTree(){
this.lastname = "xyz";
}
Если я хочу, чтобы добавить какие-либо дополнительные детали для них, насколько я читал, мы можем наследовать родительский двумя способами:
1: прототипичный путь:
familyTree.prototype.personDetails = function(){
this.firstName = "abc";
this.middleName = "middle1";
var newToString = function(name){ //overwriting toString method
console.log("The name is: "+name+"Middle Name is "+middleName);
}
}
2: Классическая way with 'new' keyword
var newPerson = new familyTree();
newPerson.firstName = "abc";
newPerson.middleName = "middle1";
newperson.newToString = function (name){
console.log("The name is: "+name+"Middle Name is "+middleName);
}
Скажем, если я хочу создать 100 разных средних имен.
Что имеет смысл? Использование классического наследства или прототипа? Потому что использование Classical может копировать все объекты, но с использованием прототипа может получить все беспорядочное.
Просьба проиллюстрировать, когда нужно использовать классический прототип.
Ни один из них являются примерами наследования, они представляют собой два различных способа добавления свойств к конкретный экземпляр. И ваш первый пример имеет синтаксическую ошибку в первой строке. JavaScript имеет только прототипическое наследование. –
И второй пример устанавливает свойство «firstName» дважды. –
Свойства должны быть определены в конструкторе, чтобы каждый новый экземпляр мог хранить значения, которые не зависят от какого-либо другого экземпляра («специфичный для экземпляра»). Методы должны быть добавлены к прототипу конструктора, чтобы функция не должна храниться как часть каждого экземпляра, но все экземпляры все равно наследуют поведение. Поведение не меняется от экземпляра к экземпляру, но данные делают. –