Клиентский JavaScript 1.3




Глава 8 Объектная Модель. Детали.


    Глава 8 Объектная Модель. Детали.
    JavaScript это язык на базе прототипов, а не на базе классов. Из-за этого в JavaScript менее очевидно, как создаётся иерархия объектов и происходит наследование свойств и их значений. В данной гла...
    Языки на базе классов и языки на базе прототипов
    Объектно-ориентированные языки на базе классов, такие как Java и C++, помогут понять две разных сущности: класс и экземпляр. Класс определяет все свойства (методы и поля - в Java, члены, то есть с...
    Определение класса
    В языках на базе классов Вы определяете класс в отдельном определении класса\class definition . Здесь Вы можете специфицировать специальные методы, называемые конструкторами , которые создают экзе...
    Подклассы и наследование
    В языках на основе классов Вы создаёте иерархию классов через определения классов. В определении класса Вы можете специфицировать, что новый класс является подклассом\subclass уже существующего кл...
    Добавление и удаление свойств
    В языках на основе классов Вы обычно создаёте класс на этапе компиляции, а затем инстанциируете экземпляры на этапе компиляции или на этапе прогона. Вы не можете изменить количество или тип свойст...
    Отличия. Резюме.
    В таблице дано краткое резюме по некоторым отличительным особенностям языков. Остальная часть данной главы посвящена деталям использования конструкторов и прототипов языка JavaScript для создания...
    Таблица 8.1 Сравнение объектных...
    На базе классов (Java) На базе прототипов (JavaScript) Класс и экземпляр это разные сущности. Все объекты являются экземплярами. Класс определяется в определении класса; инстанциация (создание экз...
    Пример Employee
    В остальной части данной главы используется иерархия employee, показанная на рисунке....
    Рисунок 8.1 Простая иерархия объектов
    В этом примере используются следующие объекты: Employee имеет свойства name (значение по умолчанию - пустая строка) и dept (значение по умолчанию - "general"). Manager базируется на Employee. Он д...
    Создание иерархии
    Есть несколько способов создания функции-конструктора для реализации иерархии Employee. Выбор конкретного способа во многом зависит от того, что должно будет делать Ваше приложение. В данном разде...
    Рисунок 8.2 Определения объекта Employee
    Следующие определения Employee в Java и в JavaScript похожи. Единственное отличие - Вы должны специфицировать тип каждого свойства в Java, но не в JavaScript, и Вы должны создать конкретный метод-...
    Рисунок 8.3 Создание объектов с помощью простых определений
    Свойства объекта
    В этом разделе обсуждается, как объекты наследуют свойства других объектов в цепочке прототипов и что происходит при добавлении свойства на этапе прогона....
    Наследование свойств
    Предположим, Вы создаёте объект mark как WorkerBee, как показано на Рисунке 8.3 , следующим оператором: mark = new WorkerBee; Когда JavaScript видит операцию new, он создаёт новый родовой/generic...
    Добавление свойств
    В JavaScript Вы можете добавить свойства любому объекту на этапе прогона. Вы не ограничены использованием только свойств, предоставленных функцией-конструктором. Для добавления свойств, специфичны...
    Рисунок 8.4 Добавление свойств
    Более гибкие конструкторы
    Показанная функция-конструктор не даёт возможности создавать экземпляры. Как и в Java, Вы можете предоставлять аргументы конструктору для инициализации значений свойств экземпляров. На рисунке пок...
    Рисунок 8.5 Специфицирование свойств в конструкторе, этап 1
    В таблице показаны определения Java и JavaScript для этих объектов. JavaScript Java function Employee (name, dept) { this.name = name || ""; this.dept = dept || "general"; } public class Employee...
    Рисунок 8.6 Специфицирование свойств в конструкторе, этап 2
    Рассмотрим одно из этих определений детально. Вот новое определение для конструктора Engineer: function Engineer (name, projs, mach) { this.base = WorkerBee; this.base(name, "engineering", projs);...
    И снова о наследовании свойств
    В предыдущем разделе показано, как реализуются иерархия и наследование в конструкторах и прототипах JavaScript. В данном разделе обсуждаются некоторые тонкости, не очевидные при предыдущем рассмот...
    Локальные и наследуемые значения
    Когда Вы выполняете доступ к свойству объекта, JavaScript выполняет следующие шаги, как уже было показано в этой главе: Проверяется, существует ли значение локально. Если да, это значение возвраща...
    Определение взаимоотношений экземпляров
    Возможно, Вы захотите узнать, какие объекты находятся в цепочке прототипов данного объекта, чтобы определить, из какого объекта данный объект наследует свойства. В языках на базе классов Вы можете...
    Глобальная информация в конструкторах
    При создании конструкторов Вы должны быть осторожны, если устанавливаете глобальную информацию в конструкторе. Например, у Вас имеется уникальный идентификатор ID, присваиваемый автоматически кажд...
    Нет множественного наследования
    Некоторые объектно-ориентированные языки допускают множественное наследование. То есть объект может наследовать свойства и значения из не соотнесённых/unrelated родительских объектов. JavaScript н...









Начало