Объекты JavaScript
Реализация объектно-ориентированного программирования в JavaScript
Язык JavaScript является объектно-ориентированным языком программирования, в котором реализован второй подход к созданию объектов с определением для новых объектов набора свойств и методов, а также клонированием существующих объектов из их прототипов (хотя в список ключевых слов для будущего использования внесено слово class). В связи с этим в нем не определены такие понятия объектно-ориентированных программирования, как класс, перегрузка методов, механизмы наследования, полиморфизм и другие. Термин «функция» в JavaScript эквивалентен термину «метод» в других объектно-ориентированных языках.
В новой, четвертой редакции стандарта ECMA-262, которая находится сейчас в стадии обсуждения, в язык введены классы и все связанные с ними возможности.
В языке JavaScript определены следующие группы объектов:
· встроенные объекты;
· объекты, создаваемые пользователем;
· объекты Web-браузера.
|
|
Встроенные объекты используются для выполнения различных операций с типовыми объектами: строками, календарными датами, массивами, числами и т. д. Для работы с встроенным объектом надо выполнить его клонирование, а затем обращается к свойствам и методам созданного объекта, которые он наследует от своего прототипа.
Программист может создать свои объекты JavaScript как функции, в которых определены свойства, играющие роль данных. Что касается методов, то они тоже определяются как функции, но отдельно.
При интерпретации Web-страницы браузером создаются объекты Web-браузера. К свойствам и методам этих объектов можно обращаться так же, как и для встроенных объектов, но состав этих объектов зависит от Web-браузера.
Для создания нового объекта из существующего объекта в JavaScript используется ключевое слово new.
Предложение создания нового объекта имеет следующий синтаксис:
var переменная = new имя-объекта-прототипа ([ параметры ])
Этот оператор создает (с именем переменная) новый экземпляр объекта того же типа, что и объект-прототип.
При создании объектного типа вызывается функция-конструктор с именем, совпадающим с именем объекта-прототипа. Создавать новые объекты можно для встроенных объектов (в этом случае используется встроенный конструктор для данного объекта) или объектов, создаваемых пользователем (в этом случае программист должен сам определить функцию-конструктор).
Пример 4.4.36. Создание нового объекта:
1. var string1= new String("Строка 1");
С помощью этого предложения создан объект встроенного объекта String (строка) с именем string1.
2. var string2= new String("Строка 2");
|
|
С помощью этого предложения создан второй объект встроенного объекта String (строка) с именем string2.
Объекту может быть присвоено специальное значение null. Объект, который еще не инициализирован, также имеет значение null.
Поскольку свойства и методы в объектно-ориентированных языках привязаны к объекту, доступ к ним в JavaScript осуществляется, как и в других объектно-ориентированных языках, с помощью так называемой точечной нотации, имеющей следующий синтаксис:
имя-объекта.имя-свойства
имя-объекта.имя-функции (аргументы)
Для ссылки на текущий объект используется ключевое слово this.
Пример 4.4.37. Обращение к методам и свойствам объекта:
1. string1Length = string1.length;
Обращение к свойству length для созданного в предыдущем примере объекта string1. Свойство length содержит текущую длину – 8 объекта string1. Значение свойства присваивается переменной string1Length.
2. newString = string1.concat(string2);
Обращение к методу concat() для созданного в предыдущем примере объекта string1. Этот метод создает объект newString типа String, в котором содержится объединены (сцеплены) строки string1 и string2.
3. currentLength = this.length;
Определение длины текущего объекта-строки.