У меня есть множество ссылок и не может получить хорошее представление о различии между классическим наследованием и прототипным наследованием?
Я узнал кое-что из них, но я все еще смущен понятиями.
Классическое наследование
// Shape - superclass
function Shape() {
this.x = 0;
this.y = 0;
}
//superclass method
Shape.prototype.move = function(x, y) {
this.x += x;
this.y += y;
console.info("Shape moved.");
};
// Rectangle - subclass
function Rectangle() {
Shape.call(this); //call super constructor.
}
//subclass extends superclass
Rectangle.prototype = Object.create(Shape.prototype);
Использует ли классическое наследование прототипное наследование внутри?
http://aaditmshah.github.io/why-prototypal-inheritance-matters/
Из вышеприведенной ссылки я узнал, что мы не можем добавлять новые методы во время выполнения в классическом наследовании. Это верно? Но вы можете проверить приведенный выше код Я могу добавить метод "move" и любые методы во время выполнения через прототип. Итак, это прототип, основанный на классическом наследовании? Если да, то каково фактическое классическое наследование и наследование прототипа? Я смущен этим.
Прототипное наследование.
function Circle(radius) {
this.radius = radius;
}
Circle.prototype.area = function () {
var radius = this.radius;
return Math.PI * radius * radius;
};
Circle.prototype.circumference: function () {
return 2 * Math.PI * this.radius;
};
var circle = new Circle(5);
var circle2 = new Circle(10);
Это похоже на классическое наследование? Я полностью смущен тем, что такое прототипное наследование? Что такое классическое наследование? Почему классическое наследование плохое?
Можете ли вы дать мне простой пример для лучшего понимания этого простым способом.
Спасибо,
Шив