Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Создание экземпляра объекта с помощью инициализатора

Создание пользовательских объектов и экземпляров объектов

Для создания собственных (пользовательских) объектов в JavaScript можно использовать два способа:

· создание экземпляра объекта с помощью инициализатора;

· создание объекта с помощью функции-конструктора.

Инициализатор объекта создает уникальный экземпляр объекта с заданными свойствами и методами. Инициализатор имеет следующий синтаксис:

{

идентификатор-свойства-1: выражение-1,

 

идентификатор-свойства-2: выражение-2,

идентификатор-функции-1: function(список-параметров-1)

{ тело-функции-1 },

идентификатор-функции-2: function(список-параметров-2)

{ тело-функции-2 },

}

При создании экземпляра объекта с помощью предложения:

var идентификатор-объекта = инициализатор-объекта;

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

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

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

 

Пример 4.4.63. Использование инициализатора объекта:

1. // Создание экземпляра объекта point

var point =

{

x:0, // Свойство x: координата x точки

y:0, // Свойство y: координата y точки

// Функция assign: присваивание значений

// координатам точки

assign:function(x, y)

{

// Присваивание значения

// координате x точки

this.x = x;

// Присваивание значения

// координате x точки

this.y = y;

// Возврат объекта

return this;

},

// Функция move: перемещение точки

move:function(dx, dy)

{

// Перемещение точки на заданное

// приращение по оси x

this.x += dx;

// Перемещение точки на заданное

// приращение по оси y

this.y += dy;

},

 

 

// Функция toString: преобразование

// объекта point в строку

toString:function()

{

return "(" + this.x + "," + this.y + ")";

}

};

// Вывод текущих значений свойств

// x и y объекта point

alert("x=" + point.x + " y=" + point.y);

// Создание связанного объекта point1

// с заданными координатами

point1 = point.assign(3, 4);

// Вывод координат point1

alert("point1= " + point1.toString());

// Перемещение point1

point1.move(5, -3);

// Вывод координат point

alert("point= " + point.toString());

В этом фрагмента с помощью инициализатора создается объект point (точка) со свойствами x и y, а также функциями assign(),move() и toString().

Вывод фрагмента имеет следующий вид:

 

2. // Создание экземпляра объекта line

var line =

{

// Координаты x и y начала линии

// (использован объект point)

coord1:point.assign(0,0),

// Координаты x и y окончания линии

// (создан новый экземпляр объект point)

coord2:

{

x:1, // Свойство x: координата x точки

y:1, // Свойство y: координата y точки

// Функция assign: присваивание значений

// координатам точки

assign:function(x, y)

{

// Присваивание значения

// координате x точки

this.x = x;

// Присваивание значения

// координате x точки

this.y = y;

 

// Возврат объекта

return this;

},

// Функция toString: преобразование

// объекта point в строку

toString:function()

{

return "(" + this.x + "," + this.y + ")";

}

},

// Функция length: определение длины линии

length:function()

{

return Math.sqrt(Math.pow(this.coord1.x –

this.coord2.x, 2) +

Math.pow(this.coord1.y - this.coord2.y, 2));

return Math.sqrt(Math.pow(this.coord1.x - this.coord2.x, 2) +

Math.pow(this.coord1.y - this.coord2.y, 2));

},

// Функция toString: преобразование

// объекта line в строку

toString:function()

{

return "(" + this.coord1.toString() +

"," + this.coord2.toString() + ")";

}

 

};

// Вывод координат и длины линии

alert("Линия: " + line.toString() +

" Длина: " + line.length());

// Изменение координат линии

line.coord1.assign(2,5);

line.coord2.assign(7,10);

// Вывод координат и длины новой линии

alert("Новая линия: " + line.toString() +

" Длина: " + line.length());

В этом фрагменте сценария с помощью инициализатора создается объект (линия), для которого определены свойства coord1 и coord2, а также функции length() и toString(). Свойства coord1 и coord2 являются объектами – точками. Для инициализации свойства coord1 использован объект point из пункта 1 этого примера. Инициализатор для coord2 помещен непосредственно в инициализатор line.

Вывод фрагмента имеет следующий вид:

<== предыдущая лекция | следующая лекция ==>
Основные этапы формирования единого российского централизованного государства | Создание объекта с помощью функции-конструктора
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 268; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.