Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
7 Мб
Скачать
☆

5.4. Объектная модель

Объекты являются представителями технологии Объектно Ориентированного Программирования(ООП). В JavaScript используются объекты с прототипами, в отличие от объектов с классами, используемых в Java или C++. Классы несут в себе такие свойства как инкапсуляция, наследование и полиморфизм. Объекты JavaScript не являются полноценнымы представителями ООП. В JavaScript используются следующие виды объектов:

  • пользовательские объекты, которые создаются пользователями с помощью конструктора и объекта Object или с помощью инициализации;

  • встроенные объекты языка JavaScript: String — строка; Array — массив; Date — дата и время; Math — математические функции. Кроме этого, стандарт ECMAScript поддерживает объекты Boolean, Number, Global, Object, RegExp.

  • Имеются еще объекты браузера, которые создаются автоматически

при загрузке документа: window — объект верхнего уровня; location —описывает местонахождение текущего документа; history — содержит информацию о ресурсах, к которым пользователь обращался во время текущего сеанса; navigator — содержит информацию о версии браузера. Кроме этого, имеются объекты frames, screen а также методы setTimeout() и setInterval().

Объекты DOM, связанные с элементами - тэгами HTML и стилями CSS. В соответствии с моделью DOM элементы Веб - страницы соответствуют свойствам объекта document. Объект document — содержит свойства-объекты innerText, innerHTML, textContent, относящиеся к текущему HTML-документу. Методы: getElementById(), getElementByTopName.

5.4.1. Пользовательские объекты

Объектно-ориентированные языки (например, Java и C++) основаны на базовых понятиях классов объектов и экземпляров (instances) объектов. JavaScript основан на прототипах и в нем есть только объекты. Вверху иерархии находится объект Object с методами toString() и свойством prototype. Прототип объекта определяет некоторый начальный набор свойств объекта. В процессе работы объект может получать новые свойства через прототип и может сам выступать в качестве прототипа при создании новых объектов.

Существует два основных способа создания новых объектов в JavaScript:

  1. Использование конструктора объектов.

  2. Использование инициализатора объекта.

Kонструктор определяем как функцию, которая создает объекты с заданным начальным набором свойств и их значений. Объекты создаются вызовом операции:  new имя_конструктора(). Имя конструктора определяет имя класса. Декларация конструктора совпадает с декларацией класса. Рассмотрим пример:

<DOCTYPE html>

<!-- пример #pro1: object -->

<html> <head>

<title> Объект HTML </title>

</head>

<body >

<script type="text/javascript">

function Book() {//конструктор

this.paper = true;

}

var myBook = new Book(); //Объект

alert(myBook.paper); //выведет true

alert("MyBooktype "+typeof(myBook)); //object

alert(Book.prototype); // [object Object]

alert(Object.getPrototypeOf(Book)); //function(){}

alert(Object.getPrototypeOf(myBook)) //[object Object]

for (var i in myBook)

alert('myBook'+i ) //myBook.paper

</script>

</body></html>

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

<DOCTYPE html>

<html> <head>

<title> Объект- pro2</title>

</head><body >

<script type="text/javascript">

function Book(isPaper, name, version) {//конструктор с параметрами

if (isPaper) this.paper = true;

else this.paper = false;

this.name = name;

this.version = version;

this.aboutBook = function() {

document.write("Book: " + this.name + " " + this.version); }

}

var myBook = new Book(true, "Programming","3");

myBook.price = 100;//добавление свойства объекту

Book.prototype.benifit = 20;// добавление свойства прототипу объект

alert(myBook.aboutBook); //выведет function(){…..}

alert("price "+myBook.price); //100

alert("benifit "+myBook.benifit)//20

alert(Object.getPrototypeOf(Book));// function(){}

alert(Object.getPrototypeOf(myBook));//[object Object]

var myBook1 = new Book(false, "Progr","5");

alert(myBook1.price); //undefined

alert(myBook1.benifit)//20

for (var i in myBook1)//отсутствует price

alert('myBook1'+i )//paper, name,version, aboutbook, benifit

</script>

</body></html>

Свойство price добавлено только для объекта myBook, а свойство benefit для всего прототипа. Свойство-функция называется методом.

Объект JavaScript представляет набор свойств, образующих ассоциированный массив. Для доступа к свойству объекта используется синтаксис: имя_объекта.имя_свойства. Если имя свойства задано текстовой строкой, то доступ к свойству возможен и так: имя_объекта["имя_свойства"]

Мы можем удалить свойство или ранее созданный объект с помощью операции delete, например: delete myBook;