Я хотел бы знать, в чем разница между переопределяющими методами с прототипами и без прототипов. Рассмотрим:Переопределение методов в Javascript
Пример 1:
function Animal() {
this.sleep = function() {
alert("animal sleeping");
};
this.eat = function() {
alert("animal eating");
};
}
function Dog() {
this.eat = function() {
alert("Dog eating");
};
}
Dog.prototype = new Animal;
var dog = new Dog;
dog.eat();
Пример 2:
function Animal() { }
function Dog() { }
Animal.prototype.sleep = function() {
alert("animal sleeping");
};
Animal.prototype.eat = function() {
alert("animal eating");
};
Dog.prototype = new Animal;
Dog.prototype.eat = function() {
alert("Dog eating");
};
var dog = new Dog;
dog.eat();
Я чувствую оба примера дают тот же эффект, что Dog
класс Переопределение метода есть от Animal
класс. Или есть что-то другое?
Вы должны использовать 'this' ключевое слово при определении свойств объекта в конструкторе. – ShuklaSannidhya
@Sann sorry пропустил это ключевое слово. Отредактировал вопрос сейчас. – codingsplash
Это почти всегда хорошая идея, чтобы поместить методы в прототип, поскольку тогда они распределяются между всеми экземплярами. Помещение их в ваш конструктор копирует их по всем экземплярам, и это потребляет больше памяти. – Rik