Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Интернет технологии -> JavaScript -> Программирование в JavaScript


1.5 Объекты. Модель объекта.

JavaScript основан на простой объектно-ориентируемой парадигме. Объект строят со свойствами, которые являются переменными JavaScript или другими объектами. Объект также имеет функции, связанные с ним, которые называются методами объекта. В дополнение к объектам, которые встроены в Navigator клиента и LiveWire server, можно определить свои собственные объекты.

1.5.1 Объекты и свойства.

Свойства объектов JavaScript доступны следующим образом:

NameObject.Property

где NameObject- имя объекта, Property - его свойство.

Предположим имеется объект с именем department(отдел). Можно определить свойства этого объекта:

название(name),

руководитель(chief),

число сотрудников(number_of_workers) следующим образом:

department.name = "rk6"

department.chief = "Norenkov I.P."

department.number_of_workers = 23;

Второй способ доступа к свойствам - через массивы. Свойства и массивы в JavaScript - довольно близки, фактически они представляют собой различные интерфейсы к одной и той же структуре данных. Так, например, можно определить свойства объекта department следующим образом:

department["name"] = "rk6"

department["chief"] = "Norenkov I.P."

department["number_of_workers "] = 23

Этот тип массива известен как ассоциативный, потому что каждый индекс является строкой. Следующая функция выводит свойства объекта, когда ей передается объект и имя объекта в качестве аргументов.

function show_props(obj, obj_name) {
          var result = ""
          for (var i in obj)
              result += obj_name + "." + i + " = " + obj[i] + "\n"
          return result
}

Так функция, show_props(department, "department") выведет следующий результат: department.name = rk6

department.chief = Norenkov I.P.

department.number_of_workers = 23

1.5.2 Создание новых объектов.

И клиент и сервер JavaScript имеют набор предопределенных объектов. Кроме этого, есть возможность создавать свои собственные объекты, для этого необходимо:

1. Определить тип объекта с помощью конструктора.

2. Создать экземпляр объекта с помощью оператора new.

Для того, чтобы определить тип объекта, создается функция, в которой определяется имя, свойства, и методы объекта. Например, предположим, что мы хотим создать объект типа отдел. Мы хoтим, чтобы он назывался department и имел свойства - название(name), руководитель(chief), число сотрудников(number_of_workers) и тема над которой работает отдел(theme). Функция будет выглядеть следующим образом:

function department(name, chief, number_of_workers, theme) 

{ this.name = name
  this.chief = chief
  this.number_of_workers = number_of_workers
}

Заметим, что значения свойств объекта определяются значениями, переданными функции. Теперь создадим объект типа department с именем ourdep:

 ourdep = new department("rk6", "Norenkov I.P.", 23) 

В том операторе объекту ourdep назначаются следующие свойства: ourdep.name присваивается строковое значение "rk6", ourdep. number_of_workers - целое 23 и т.д. Можно создать любое количество таких объектов, еще один пример: iu6dep = new department("iu6", "Smirnov U.M", 34). Объект может иметь свойства, которые являются свойствами другого объекта. Предположим мы определяем объект person:

function person(name, age, sex) {
          this.name = name
          this.age = age
          this.sex = sex
}

и создаем два экземпляра этого объекта:

fed = new person("Fedoruk V.G.", 43, "M")

trudon = new person("Trudonoshin V.A.", 46, "M")

Теперь мы хотим переопределить объект department, чтобы он включал новое свойство - сотрудников:

 function department(name, chief,number_of_workers, collab)
 { this.name = name 
   this.chief = chief
   this.number_of_workers = number_of_workers
   this.collab =collab }

Создаем новые объекты типа department:

ourdep = new department("rk6", "Norenkov I.P.", 23,trudon)

iu6dep = new department("iu6", "Smirnov U.M", 34,fed)

Можно обратить внимание, что при создании объектов типа department, им в качестве аргументов передаются имена объектов. Теперь, если мы хотим найти имя сотрудника отдела iu6, то можем воспользоваться следующей записью:

iu6.collab.name

Заметим, что всегда можно добавить свойства к ранее определенному объекту, например оператор rk6.theme = "rk6-07" добавит свойство theme к rk6, и назначит ему значение "rk6-07". Однако это не повлияет на другие объекты, для добавления новых свойств ко всем объектам данного типа необходимо изменить определение объекта.

1.5.3 Использование индексов для свойств объекта.

В Navigator 2.0, можно обратиться к свойствам объекта по их названию или по их порядковому индексу. В Navigator3.0, если первоначально свойство определено с помощью названия, то при обращении к нему нужно использовать название, если первоначально воспользовались индексом, то и обращение должно быть с индексом. Исключением из этого правила - объекты типа form, к ним можно обратиться как к элементу массива в соответствии с их порядковым номером (он определяется порядком появления формы в документе) или по имени. Например, если второй тег <FORM> в документе имеет аттрибут NAME "myForm", можно обратиться к этой форме двумя способами:

document.forms[1]

document.forms["myForm"]

1.5.4 Определение свойств объекта по умолчанию.

Используя свойство prototype можно назначать свойства всем представителям данного типа, после этого их можно индивидуально переопределить. В следующем примере имена всех руководителей отделов (объект типа department) определяется как null, затем они могут быть изменены

department.prototype.chief=null


[ Оглавление ]   [ Дальше ]

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.