Javascript не могу понять логики наследования? Вот есть один кодfunction inherit(proto) {
function F() {}
F.prototype = proto;
var object = new F;
return object;
}
Вот второй:function extend(Child, Parent) {
var F = function() { }
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype
}
Оба они реализуют возможность наследования. Но мне не понятен один момент: Почему в первом варианте :F.prototype = proto;
, а во втором:F.prototype = Parent.prototype
В чем разница в этих подходах.
Я до сих пор не могу понять почему мы пишемF.prototype = Parent.prototype
, то есть мы говорим, я хочу объекту F поставить родителя, который будет родителем Parent. Зачем для F делать родителем родителя Parent. По хорошему счету Parent.prototype для F будет дедушкой. С моим классический пониманием ООП не могу этого понять, а как данность, пока не пойму не приму(

21 Авг 2019 в 07:03
163 +1
0
Ответы
1

Разница между двумя подходами заключается в том, что в первом варианте функция inherit создает новый объект, который наследует свойства и методы из объекта, переданного в качестве аргумента (proto). Таким образом, в этом случае F.prototype устанавливается равным proto, чтобы новый объект наследовал его свойства и методы.

Во втором варианте функции extend используется для наследования классов. Здесь F.prototype устанавливается равным Parent.prototype, чтобы дочерний класс (Child) наследовал свойства и методы родительского класса (Parent). Это позволяет Child доступиться к методам и свойствам Parent.

Следовательно, в первом варианте мы наследуем объект, а во втором - классы. Каждый из этих подходов имеет свои особенности и может быть применен в зависимости от конкретной задачи.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир