Прототипируемое наследование в Javascript

Как такового наследования в Javscript’е не предусмотрено. Но ее можно реализовать самому, разными способами. Одним из наиболее простых и эффективных способов является реализация через прототипы объектов.

В прототипируемых языках, объекты наследуются от объектов. Однако, в Javascript не хватает оператора который выполняет эту операцию. Вместо этого есть оператор new:
new f() 

он создает новый объект, который наследует
f.prototype

Этот, скажем так костыль, был введен для того чтобы язык казался более знакомым классическим программистам, но это не удалось т.к. мы можем наблюдать какого низкого мнения Java программисты о Javascript’e. В Javascript’е также нет конструктора объектов. Это мешает правильной прототипируемости в Javascript. В результате чего существует очень мало программистов знающих как можно эффективнее использовать язык.

К счастью, легко можно создать оператор который реализует истинное прототипируемое наследование:
function object(o)
{
        function F(){}
        F.prototype = o;
        return new F();
}

Функция object решает эту проблему. Он берет старый объект как параметр и возвращает новый пустой объект который наследует старый объект. Объекты которые наследуют объекты. Что может быть более объектно ориентированным!?

Итак, вместо классов, создаете прототипируемые объекты. И затем функцией object создаете новые экземпляры. Объекты в Javascript’е можно менять, добавляя новые поля и методы. И затем использовать как прототипы для новых объектов. Не обязательно иметь классы для создания кучи одинаковых объектов.

Для удобства можно написать функцию которая будет запускать функцию object вместо нас. С помощью такой функции можно реализовать привилегирование. В этом направлении можно придумать очень много интересных вещей.
Теги:
Прототипируемое наследование
Добавлено: 13 Июля 2018 07:31:45 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...