Прототипируемое наследование в Javascript
Доброго времени суток, уважаемые читатели моего блога!
Сегодня, как и обещал в предыдущей статье, темой самой статьи будет программирование, а точнее — поговорим о протитипируемом наследии в 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 вместо нас. С помощью такой функции можно реализовать привилегирование. В этом направлении можно придумать очень много интересных вещей.
На этом буду заканчивать))!
Следующая статья, как я думаю, опять будет из серии программирования!
Чтобы ничего не пропустить — подписывайтесь на новости моего блога, чтобы все время быть в курсе!
Но на сегодня все — с Вами был ваш Юрич!