Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Дисциплины:
2017-06-29 | 233 |
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 нельзя перегрузить функцию.
|
|
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!