Объекты в JavaScript |
JavaScript разработан с использованием простой объектно-ориентированной парадигмы. Объект - это конструкция со свойствами, которые являются переменными JavaScript или другими объектами. Объект также может иметь ассоциированные с ним функции, которые известны как методы объекта. В дополнение к имеющимся в Navigator клиентским и серверным объектам Вы можете определять свои собственные объекты. |
Объекты и Свойства |
Объект в JavaScript имеет ассоциированные с ним свойства. Вы получаете доступ к свойству очень просто: Имя_объекта.Имя_свойства И имя объекта, и имя свойства чувствительны к регистру. Вы определяете свойство, присваивая ему значение. Например, предположим, имеется объект myCar (начиная отсюда, примем для удобства, что объект уже существует). В JavaScript 1.0 Вы можете ссылаться на свойства объектов по имени свойства или по порядковому индексу. В JavaScript 1.1 и позднее, однако, если Вы первоначально определили свойство по имени, Вы всегда обязаны будете обращаться к нему по имени, и, если Вы первоначально определили свойство по индексу, Вы всегда обязаны будете обращаться к нему по его индексу. Это применимо при создании объекта и его свойств с помощью конструктора функции, как в примере с типом объекта Car, и если Вы определяете отдельные свойства явным образом (например, myCar.color = "red"). Так, если Вы определили свойства объекта по индексу, как, например, myCar[5] = "25 mpg", Вы можете затем обращаться к этому свойству только как myCar[5]. Исключением из этого правила являются объекты, отражённые из HTML, такие как массивы форм. Вы всегда обращаетесь к этим объектам по порядковому номеру (зависящим от местонахождения объекта в документе) или по их именам (если они определены). Например, если второй тэг <FORM> в документе имеет в атрибуте NAME значение "myForm", Вы можете ссылаться на форму document.forms[1], или document.forms["myForm"] или document.myForm. Вы можете добавлять свойство к ранее определённому типу объекта через использование свойства prototype. Так определяется свойство, которое совместно используется всеми объектами специфицированного типа, а не только одним данным экземпляром этого объекта. Следующий код добавляет свойство color ко всем объекта типа car, а затем присваивает значение свойству color объекта car1. Car.prototype.color=null; |
Создание Новых Объектов |
В JavaScript есть несколько предопределённых объектов. Кроме того, Вы можете создать Ваши собственные объекты. В JavaScript 1.2 и позднее Вы можете создать объект, используя инициализатор объекта. Альтернативно, Вы можете сначала создать конструктор функции, а затем - инстанциировать объект (создать экземпляр), используя эту функцию и оператор new. Помимо создания объектов с использованием конструктора функции, Вы можете создать объекты, используя инициализаторы объектов. Использование инициализаторов иногда называется созданием объектов в литеральной нотации. "Инициализатор Объекта" следует терминологии C++. Синтаксис объекта, использующего инициализатор, таков: Имя_объекта = {свойство1:значение1, свойство2:значение2,..., свойствоN:значениеN} где Имя_объекта это имя нового объекта, каждое
свойство1 является идентификатором (именем,
числом или строковым литералом), а каждое значение1
является выражением, значение которого присваивается свойству1. Если объект создаётся инициализатором в скрипте верхнего уровня, JavaScript интерпретирует этот объект каждый раз при вычислении выражения, содержащего литерал объекта. Кроме того, инициализатор, используемый в функции, создаётся каждый раз при вызове функции. Альтернативно Вы можете создать объект в два этапа:
Чтобы определить тип объекта, создайте функцию для типа объекта, которая специфицирует его имя , свойства и методы. Например, предположим, Вы хотите создать тип объекта для автомобилей и назвать его car, и чтобы он имел свойства make, model, year и color. Для этого нужно написать такую функцию: function car(make, model, year) { Обратите внимание на использование this для присвоения значений свойствам объекта на базе значений, передаваемых в эту функцию. |
Определение Методов |
Метод это функция, ассоциированная с объектом. Метод определяется
так же, как стандартная функция. Затем используется следующий синтаксис
для ассоциирования функции с уже существующим объектом:
object.methodname = function_name где object это существующий объект, methodname это имя определяемого Вами метода, а function_name имя функции. Вы затем вызываете метод в контексте объекта: object.methodname(params); Вы можете также определить методы для типа объекта, включив определение метода в конструктор функции. |
Использование Слова this для Ссылок на Объект |
JavaScript имеет специальное ключевое слово this, которое может использоваться внутри метода для ссылки на текущий объект. В сочетании со свойством формы, this может обращаться к родительской форме текущего объекта. |
Определение Getter`ов и Setter`ов |
Getter это метод, получающий значение отдельного свойства. Setter это метод, устанавливающий значение отдельного свойства. Вы можете определить getter и setter в любом предопределённом объекте ядра или в пользовательском объекте, поддерживающем добавление новых свойств. Синтаксис определения getter и setter использует синтаксис литерала объекта. Следующая сессия JS-оболочки иллюстрирует, как getter и setter могут работать для определённого пользователем объекта o. JS-оболочка является приложением, позволяющим разработчикам тестировать код JavaScript в пакетном режиме или интерактивно. Свойствами объекта о являются:
js> o = new Object; |
Удаление Свойств |
Вы можете удалить свойство оператором delete. Можно также использовать delete для удаления глобальной переменной, если ключевое слово var не было использовано при объявлении этой переменной |
Предопределённые Объекты ядра JavaScript |
В JavaScript нет отдельного типа для массива данных. Однако Вы можете использовать предопределённый объект Array и его методы для работы с массивами в Ваших приложениях. Объект Array имеет методы для манипулирования массивами: объединения, разворачивания и сортировки. Он имеет также свойство для определения размера массива и другие свойства для использования с регулярными выражениями. Ели массив является результатом совпадения регулярного выражения и строки, этот массив возвращает свойства и элементы, предоставляющие информацию о совпадении. Массив является return-значением методов RegExp.exec, String.match и String.split. Объект Boolean является оболочкой вокруг примитивного типа данных Boolean. Для создания Boolean-объекта используйте следующий синтаксис: booleanObjectName = new Boolean(value) Не путайте примитивные Boolean-значения true и false со значениями true и false Boolean-объекта. Любой объект, значение которого не undefined , null, 0, NaN или не пустая строка, включая Boolean-объект со значением false, вычисляется в true при передаче условному оператору. В JavaScript нет типа данных data. Однако Вы можете использовать для работы с датами и временем объект Date и его методы. Объект Date имеет большое количество методов для установки, получения и манипулирования датами. Он не имеет никаких свойств. JavaScript обрабатывает даты аналогично Java. Эти два языка имеют много аналогичных date-методов и оба хранят даты как количество миллисекунд, прошедших после 1 января 1970 года, 00:00:00. Объект Date имеет диапазон значений от -100,000,000 до 100,000,000 дней в обе стороны от 01 января 1970 года UTC (Всемирного Времени). Для создания Date-объекта: dateObjectName = new Date([parameters]) где dateObjectName это имя создаваемого Date-объекта; это может быть новый объект или свойство существующего объекта. Параметры/parameters в этом синтаксисе могут быть:
Предопределённый объект Function специфицирует строку кода JavaScript, которая компилируется как функция. Создание Function-объекта: functionObjectName = new Function ([arg1, arg2, ... argn], functionBody) functionObjectName это имя переменной или свойства существующего объекта. Это также может быть объект с последующим именем обработчика события, в нижнем регистре, таким как window.onerror. arg1, arg2, ... argn это аргументы, используемые функцией в качестве имён формальных аргументов. Каждый обязан быть строкой, соответствующей верному идентификатору JavaScript; например, "x" или "theForm". functionBody это строка, специфицирующая код JavaScript, компилируемый как тело функции. Function-объекты вычисляются всякий раз при их использовании. Это менее эффективно, чем объявление функции и вызов её в коде, поскольку объявленные функции компилируются. Присвоение функции переменной похоже на объявление функции, но есть и отличия:
Вы можете вложить одну функцию в другую. Вложенная (внутренняя) функция является private для своего контейнера (внешней функции):
Предопределённый объект Math имеет свойства и объекты для работы с математическими константами и функциями. В отличие от многих других объектов, объект Math никогда не может быть создан внутри себя. Вы всегда используете предопределённый объект Math. Объект Number содержит свойства для работы с числовыми константами, такими как максимальное значение, not-a-number и infinity/бесконечность. Вы не можете изменить значения этих свойств Объект RegExp позволяет работать с регулярными выражениями. Объект String является оболочкой вокруг примитивного типа данных string. Не путайте строковой литерал с объектом String. Вы можете вызвать любой из методов объекта String в строковом литеральном значении - JavaScript автоматически конвертирует строковой литерал во временный String-объект, вызывает метод, затем уничтожает временный String-объект. Вы можете также использовать со строковым литералом свойство String.length. Вы, как правило, должны использовать строковые литералы, если только Вам не нужно использовать именно String-объект, так как String-объекты могут иметь непредсказуемое поведение. |
HIVE: All information for read only. Please respect copyright! |