AJAX загрузка
home

Используя объекты Вы можете удобно хранить и обрабатывать информацию в JavaScript.

Создание объектов

В предыдущих главах мы рассматривали встроенные объекты JavaScript (такие как массивы, строки, и т.д.).

В данной главе мы научимся создавать свои собственные объекты.

Что такое объект?

Объект - это конструкция, которая может иметь свойства и методы. Объекты могут быть созданы двумя способами:

Синтаксис (первый способ):

Пример

//Создадим объект obj
var obj=new Object();
//Добавим объекту obj свойство name со значением 'Дмитрий'
obj.name='Дмитрий';
//Добавим объекту obj свойство age со значением 26
obj['age']=26;
//Обратимся к свойствам объекта для вывода их значений
document.write(obj.name+'<br />');
document.write(obj.age);
Быстрый просмотр

Синтаксис (второй способ):

Пример

//Создадим объект obj со свойствами name и age, которые содержат 
//значения 'Дмитрий' и 26
var obj={
   name:'Дмитрий',
   age:26
}
//Обратимся к свойствам объекта для вывода их значений
document.write(obj.name+'<br />');
document.write(obj.age);
Быстрый просмотр

В JavaScript Вы можете обращаться к свойствам объектов двумя способами:

  1. Используя точку ('.') после имени объекта:

    //Присваиваем свойству объекта произвольное значение
    имя_объекта.свойство=значение
    //Обращаемся к значению свойства объекта
    имя_объекта.свойство
    

  2. Заключая название свойства в квадратные скобки ([]) после имени объекта:

    //Присваиваем свойству произвольное значение
    имя_объекта['свойство']=значение
    //Обращаемся к значению свойства
    имя_объекта['свойство']
    

Свойства объектов

Свойства - это значения, связанные с объектами.

Например, объект человек может иметь следующие свойства: имя, возраст, профессия.

Пример

//Создадим объект human со свойствами name, age и job
var human={
   name:'Дмитрий',
   job:'Дизайнер',
   age:26
}
//Выведем значения свойств на страницу
document.write(human.name+'<br />');
document.write(human.job+'<br />');
document.write(human.age);
Быстрый просмотр

Методы объектов

Методы - это функции, связанные с объектами.

Например, объект человек может иметь следующие методы: идти(), сидеть(), думать().

Пример

  var flag;
//Создадим объект human со свойствами name, age и job
var human={
   name:'Дмитрий',
   job:'Дизайнер',
   age:26
}
//Добавим объекту метод go()
human.go = function () {
   document.write(this.name+' идет.<br />');
   var a=true;
   return a;
}
//Добавим объекту метод sit()
human.sit = function () {
   document.write(this.name+' сел.<br />');
   flag=true;
}
//Добавим объекту метод think()
human.think = function () {
   if (flag==true)
      document.write(this.name+' начал мыслительную деятельность.<br />');
   else 
     document.write(this.name+' не может начать мыслительную деятельность на 
     ходу.<br />');
}
human.about= function () {
  document.write('Объекта зовут <b>'+this.name+'</b> он работает <b>'+this.job+'ом</b> 
  и ему <b>'+this.age+'</b> лет.');
}
//Обратимся к методам объекта human
human.go();
human.think();
human.sit();
human.think();
human.about();
Быстрый просмотр

Обратите внимание: в JavaScript объекты могут иметь неограниченное количество свойств и методов.

Конструкторы объектов

В предыдущих примерах этой главы мы создавали прямые экземпляры объектов. В JavaScript существует еще один способ создания объектов - с помощью конструктора объектов.

Конструктор объектов - это шаблон, на основе которого создаются объекты. Написанный один раз конструктор, позволяет создать неограниченное количество объектов любой сложности написав лишь одну строчку кода.

Преимущества данного способа заключается в том, что он позволяет разделить логику создания объекта от его использования. Например, один человек может специализироваться на создании сложных конструкторов объектов, а другой на написании на основе этих объектов конечных программ под заказ.

Пример

//Создадим конструктор, который будет создавать объекты со свойствами name, age и 
//job и методом who 
function Human(name,age,job) {
   //Свойства шаблона
   this.name=name;
   this.age=age;
   this.job=job;
   //Методы шаблона
   this.who=function who() {
      document.write('Я<b> ' + this.name + '</b> мне <b>'+ this.age + ' </b>лет.');
      document.write(' Я работаю <b>' + this.job + 'ом</b>.<br />' );
   }
}
//Теперь мы можем создавать объекты следующим образом
human1=new Human('Дмитрий', 26, 'Дизайнер');
//Обратимся к методу who созданного объекта 
human1.who();
human2=new Human('Станислав', 29, 'Программист');
human2.who();
human3=new Human('Сергей', 35, 'Менеджер');
human3.who();
Быстрый просмотр

Обратите внимание: ключевое слово this используется для обозначения "текущего" объекта. К примеру при создании объекта human1, this в конструкторе Human подменяется на human1, а при создании объекта human2 подменяется на human2.

Обратите внимание: оператор new обязательно должен присутствовать при создании экземпляра объекта.

Свойство prototype

С помощью свойства prototype Вы можете добавлять новые свойства и методы к конструкторам объектов.

Добавленные к конструктору свойства и методы будут также добавлены ко всем объектам, которые были созданы данным конструктором.

Синтаксис:

конструктор.prototype.свойство(метод)=значение(функция);

Пример

//Создадим шаблон объекта Human
function Human(name,age) {
   this.name=name;
   this.age=age;
}
//Cоздадим объект object1 
object1=new Human('Владимир',30);
//Выведем свойства объекта object1 на страницу
document.write(object1.name+' ');
document.write(object1.age+' ');
document.write(object1.ex+'<br />');
//Теперь добавим к шаблону объекта свойство ex с помощью prototype 
Human.prototype.ex='<b>Добавлено через prototype.</b>';
//Теперь выведем свойства объекта object1 еще раз
document.write(object1.name+' ');
document.write(object1.age+' ');
document.write(object1.ex);
Быстрый просмотр

Обратите внимание: свойство prototype присутствует также у всех встроенных конструкторов JavaScript таких как массив или строка.

Наследование

Наследование - является важным механизмом объектно-ориентированного программирования. Наследование позволяет ускорить и упростить разработку конструкторов объектов.

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

Обратите внимание: с помощью конструкции свойство || "Стандартное значение" мы можем присвоить свойству объекта стандартное значение в случае, если значение не было передано в конструктор при создании объекта.

Пример

//Создадим конструктор Human
function Human(name,age,job) {
   this.name=name || "Имя не задано";
   this.age=age || 99;
   this.job=job || "Безработный";
   this.who=function(){
      document.write('Я<b> ' + this.name + '</b> мне <b>'+ this.age + ' </b>лет.');
      document.write(' Я работаю <b>' + this.job + 'ом</b>.<br />' );
   }
}
/* Создадим конструктор projectHuman, который помимо свойств и методов конструктора 
Humanимеет еще свойство project (проект), свойство term (срок сдачи проекта) и 
метод myProject*/
function projectHuman(project,term,name,age,job){
//Производим наследование от конструктора Human
   this.base=Human;
   this.base(name,age,job);
//Добавляем новые свойства
   this.project=project || "Нет проекта";
   this.term=term || "31 декабря 2099";
//Добавляем новый метод myProject()
   this.myProject=function(){
      document.write("Мой текущий проект: <b>"+this.project+"</b>.<br /> 
     Его срок сдачи: <b>"+this.term+"</b>.");
   };
}
//Создаем с помощью конструктора projectHuman объект human1 
human1=new projectHuman("Создание веб-сайта для фирмы 'ExampleCo'","20 Августа 2011",
"Дмитрий",26,"веб-мастер");
//Обратимся к его методам
human1.who();
human1.myProject();
document.write("<br />");
//Создаем с помощью конструктора projectHuman объект human2
human2=new projectHuman("Небоскреб 'TreeUnited Building'","26 Сентября 2012");
/* Обратимся к его свойствам name,age,job, которые не были переданы в конструктор, 
чтобы проверить их текущие значения */
document.write("<hr />"+human2.name+"<br />");
document.write(human2.age+"<br />");
document.write(human2.job);
Быстрый просмотр

Сделайте сами

Задание 1 Создайте объект по описанию в редакторе.

Задание 1

<script type='text/javascript'>
//Пишите код здесь
</script>