Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Дисциплины:
2017-06-29 | 234 |
5.00
из
|
Заказать работу |
|
|
Например:
var user = { name: "Вася" }; // в переменной - ссылка
var admin = user; // скопировали ссылку
Получили две переменные, в которых находятся ссылки на один и тот же объект:
Так как объект всего один, то изменения через любую переменную видны в других переменных:
var user = { name: 'Вася' };
var admin = user;
admin.name = 'Петя'; // поменяли данные через admin
alert(user.name); // 'Петя', изменения видны в user
Особенности системы наследования объектов.
В плане наследования JavaScript работает лишь с одной сущностью: объектами. Каждый объект имеет внутреннюю ссылку на другой объект, называемый его прототипом. У объекта-прототипа также есть свой собственный прототип и так далее до тех пор, пока цепочка не завершится объектом, у которого свойство prototype равно null. По определению, null не имеет прототипа и является завершающим звеном в цепочке прототипов.
Наследование свойств
Объекты в JavaScript — динамические "контейнеры", наполненные свойствами (называемыми собственными свойствами). Каждый объект содержит ссылку на свой объект-прототип. При попытке получить доступ к какому-либо свойству объекта, свойство вначале ищется в самом объекте, затем в прототипе объекта, после чего в прототипе прототипа, и так далее. Поиск ведется до тех пор, пока не найдено свойство с совпадающим именем или не достигнут конец цепочки прототипов.
Запрос свойства: bob -> bob.prototype -> human.prototype -> Object.prototype -> undefined.
hasOwnProperty(prop) — проверка наличия свойства непосредственно у объекта, не затрагивая цепочку прототипов.
Наследование "методов"
В JavaScript любая функция может быть добавлена к объекту в виде его свойства. Унаследованная функция ведёт себя точно так же, как любое другое свойство объекта, в том числе и в плане "затенения свойств" (property shadowing) - форма переопределения метода (method overriding). В области видимости унаследованной функции ссылка this указывает на наследника, а не на прототип, в котором данная функция является собственным свойством.
|
Объектно-ориентированное программирование, принципы, парадигмы.
Изучение объектно-ориентированного языка программирования невозможно без освоения трех парадигм: инкапсуляции, наследования и полиморфизма. Это равнозначные принципы, и они являются "тремя китами" среды объектно-ориентированного программирования (ООП).
Инкапсуляция - механизм объединения данных и кода обработки этих данных (функций, методов и т.п.) в объект. Работа с объектом осуществляется через интерфейс (public методы), если язык поддерживает модификатор private, то внутренняя реализация полностью скрывается от пользователя. В JS нет private полей и методов. Если это все-таки необходимо, то принято называть методы, которые не должны использоваться пользователем, начиная с '_'. Таким образом, инкапсуляция позволяет рассматривать объекты в качестве "черных ящиков" с жестко заданным набором внешне доступных методов и полей, при этом то, как реализованы эти методы, снаружи неизвестно и не важно.
Наследование - классы могут наследовать поля и методы других классов и добавлять к ним свои. Это позволяет ускорить процесс разработки за счет использования уже проверенного, готового кода.
Полиморфизм. Различные классы могут определять методы с одинаковыми именами. Как правило полиморфизм используется следующим образом: создается абстрактный класс, который определяет интерфейс, то есть как с классами подобного типа нужно взаимодействовать. Другие классы, которые будут наследоваться от абстрактного, будут реализовывать этот интерфейс. Но в JS невозможно создать абстрактный класс, можно только создать несколько классов с одинаковыми интерфейсами.
Перегрузку функций, тоже можно назвать полиморфизмом, потому что способ взаимодействия один, а данные (входные параметры) разные. Но в JS нельзя перегрузить функцию.
|
|
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!