|    | 
СИ-БИ техника | КВ техника | УКВ техника | Радиоизмерения | Защита от TVI | Источники питания | Софт | Расчеты | Справочники
Главная arrow Программирование arrow Java arrow Работа с объектами  

Работа с объектами

Оглавление
Работа с объектами
Страница 2
Страница 1 из 2

Здесь описаны некоторые приемы создания пользовательских и расширения встроенных объектов JavaScript.

Как создать пользовательский объект?

Проблема

Нужно создать пользовательский объект, имеющий определенные свойства и

методы.

Решение

Объявление пользовательского объекта в JavaScript суть объявление особой функции, которая создает все его свойства и методы и заполняет их начальными значениями. Эта функция называется конструктором.

Формат объявления функции-конструктора ничем не отличается от формата объявления обычной функции:

function <Имя пользовательского объекта> ([<Список параметров>]) {

<Объявление свойств объекта>

<Объявление методов объекта> }

Заметим, что имя функции-конструктора должно совпадать с именем объекта, который мы хотим создать.

Формат выражения, создающего новое свойство пользовательского объекта, таков:

this.<Имя свойства> = <3начение свойства>;

В данном случае ключевое слово this обозначает создаваемый объект.

Внимание!

Ключевое слово this имеет смысл только в теле функции-конструктора.

Формат выражения, создающего метод, аналогичен:

this.<Имя метода> = <Функция, реализующая этот метод>;

Фактически здесь мы присваиваем функцию созданному свойству. Заметим при этом, что в данном случае имя функции указывается без списка параметров и без скобок. Разумеется, реализующая метод функция должна быть объявлена.

В функциях, реализующих методы создаваемого объекта, мы также можем

использовать ключевое слово this. Собственно, даже не можем, а должны__

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

Созданный таким образом объект мы можем использовать в сценариях. Для создания на его основе экземпляра мы воспользуемся знакомым нам оператором new, а для удаления этого экземпляра — оператором delete.

Народ замечает

Описанный выше трюк с присвоением функции переменной работает и вне тела функции-конструктора. Так, мы можем присвоить любую функцию переменной:

function func5()

{

// Тело функции

} var varFunc = func5;

а потом вызвать ее, обратившись к этой переменной:

varFunc() ;

Повторим — при присвоении функции переменной имя присваиваемой функции указывается без списка параметров и без скобок, иначе интерпретатор JavaScript посчитает его за вызов этой функции.

Пример

Давайте создадим объект Point, обозначающий точку на экране. Этот объект будет содержать свойства х и у (координаты точки) и метод setcoords (помещение значений координат, переданных в качестве параметров, в соответствующие свойства).

Функция-конструктор этого объекта будет принимать два параметра — координаты точки. Эти координаты будут помещены в свойства х и у создаваемого экземпляра объекта.

// Объявление функции-конструктора объекта Point function Point(ix, iy) {

this.x = ix; this.у = iy;

this.setCoords = fSetCoords; } // Объявление функции, реализующей метод setCoords объекта Point function fSetCoords(ix, iy)

{

this.x = ix; this.у = iy; }

Использование созданного объекта:

var p = new Point(50, 50); p.setCoords(100, 200); var px = p.x; delete p;

Как создать пользовательский объект на основе уже имеющегося?

Проблема

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

Решение

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

Первым шагом создания объекта-потомка будет написание его функции-конструктора. Ее формат будет таким:

function <Имя объекта-потомка> ({<Список параметров>]) {

this.base = <Имя объекта-предка>;

this.base([<Список параметров функции-конструктора объекта-предка>]);

<Определение новых свойств объекта-потомка>

<Определение новых методов объекта-потомка>

Переопределение унаследованных свойств>

<Переопределение унаследованных методов> } <Имя объекта-потомка>.prototype = new <Объект-предок>;

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


Пред. - След. »


RLBN.ru - Электроника и компьютеры

0.1447
Hosted by uCoz