При создании объектов javascript я могу поместить объявление метода либо в конструкторскую функцию, либо в прототип. Например, скажем, я хочу, чтобы класс Dog имел свойство Name и метод Bark. Я могу поместить объявление метода Барк в конструкторскую функцию:
var Dog = function(name) {
this.Name = name;
this.Bark = function() {
alert(this.Name + " bark");
};
}
или я мог бы вставить в качестве метода объект-прототип:
var Dog = function(name) {
this.Name = name;
}
Dog.prototype.Bark = function() {
alert(this.Name + " bark");
};
Когда я создаю объекты типа Dog, оба подхода работают нормально:
var dog = new Dog("Fido");
dog.Bark(); //Both approaches show "Fido bark"
Предпочитаю ли я один из этих подходов к другому? Существуют ли какие-либо преимущества для использования одного над другим? За кулисами эти два подхода в конечном итоге делают то же самое? Какой подход предпочитает большинство людей?
Спасибо за помощь.