§ 22. Основы языка JavaScript

22.3. Объекты. Методы работы с объектами

Объект как тип данных состоит из многих значений (либо простых, таких как числа и строки, либо сложных, например других объектов), которые называются свойствами объекта. Два отдельных объекта в JavaScript никогда не будут равными, даже если они имеют равный набор свойств.

Объявление объекта в JavaScript:

var <имя объекта> = {
    <свойство_1>:<значение>,
    …
    <свойство_n>:<значение> };

Рассмотрите пример 22.20.

Каждый раз, когда скрипт пытается обратиться к свойству или методу значения простого типа, интерпретатор временно преобразует его в объект соответствующего типа. Временные объекты, в которые преобразуются значения примитивного типа, называют объектами обёртками. Сразу после обращения к свойству или методу объект обёртка уничтожается. Объекты обертки создаются только для значений типа number, string и boolean.

Объект String будет иметь тип данных object, если он создан с помощью оператора new (пример 22.21). Описание и примеры использования некоторых стандартных методов работы с объектом String приведены в Приложении.

В JavaScript для хранения упорядоченных данных используется  структура данных массив — Array. Элементы массива нумеруются, начиная с нуля. Существует несколько способов объявления массива (пример 22.22).

Размер массива может увеличиваться и уменьшаться в любое время. Атрибут массива length определяет общее число элементов массива. В массиве могут храниться элементы любого типа (пример 22.23).

Массивы расширяют объекты, так как предусматривают специальные методы для работы с упорядоченными структурами данных. Описание и примеры использования некоторых стандартных методов работы с объектом Array приведены в Приложении.

Для хранения математических констант и функции в JavaScript предназначен объект Math. Методы, с которыми работает этот объект аналогичны математическим функциям используемым в языке С++ (пример 22.24). Этот объект не работает с числами типа BigInt.

Для работы с датой и временем в JavaScript используются объекты Date. Такие объекты могут быть созданы только путём вызова функции Date с использованием оператора new. Некоторые свойства объекта Date:

  • Содержат дату в виде числа миллисекунд, прошедших с 01.01.1970.
  • Нумерация месяцев начинается с 0.
  • Если передано два аргумента, отсутствующие аргументы устанавливаются в стартовые значения.
  • Вызов функции Date без оператора new вернет строку с текущий датой и временем.
В примерах 22.25 и 22.26 рассмотрены случаи использования объекта Date и методы работы с объектами такого типа.

Пример 22.20. Создание объекта.

var

person = {firstName: "Ян",

         lastName: "Тур",

         age: 20,

         eyeColor: "серые"};

Пример 22.21. Объект String.

var
str =
"Это простая строка";

 

var
s_O =
new String("Объект String");

 

typeof strLit   //string

 

typeof s_O      //object

Пример 22.22. Способы объявления массива.

var holidays =

["1 мая","7 июня","3 июля"];

 

var holidays = new Array

("1 мая", "7 июня", "3 июля");

 

var holidays = new Array(3);

  holidays[0] = "1 мая";

  holidays[1] = "7 июня";

  holidays[2] = "3 июля";

Пример 22.23. Массив элементов с различным типом данных. Определение количества элементов.

 var a = [23, "Ян", true,

  function() {alert("мир");}];

 

 alert(a[1]);      // Ян

 

 alert(a.length);  // 4

Пример 22.24. Использование методов объекта Math.

var x = Math.PI;

 

 var y = Math.sqrt(16);

 

 var z = Math.round(4.7);

Тригонометрические функции  принимают в параметрах или возвращают углы в радианах. Для преобразования радианов в градусы, нужно поделить их на величину Math.PI/180. Для преобразования в обратном направлении, нужно умножить градусы на эту же величину.

Пример 22.25. Создание объекта Date.

 new Date();

// текущая дата и время

 

 new Date(0);

/* количество миллисекунд, прошедших с 01.01.1970 */

 

 new Date(1982, 8, 19);

// 1982-09-19

 

 new Date("January 1, 2022");

// 2022-01-01

 

 new Date(2020, 13, 1);

 new Date(2021, 1, 1);

/* обе функции будут содержать

дату 2021-02-01 */

 

 new Date(2021, 0, 1, 2, 3, 4);

// 2021-01-01 02:03:04

Пример 22.26. Методы объекта Date.

Методы

Описание

getFullYear()

Получить год
(из 4 цифр)

getMonth()

Получить месяц
(от 0 до 11)

getDate()

Получить число месяца (от 1 до 31)

getHours() getMinutes() getSeconds()

Получить соответствующие компоненты времени

getDay()

Получить день недели

 

var d = new Date(2021, 1, 28);

 

  d.setDate(d.getDate() + 2);

  alert(d); // 2 марта, 2021

 

var d = new Date;

 

  d.setDate(-1);

  alert(d);

/* предпоследнее число

предыдущего месяца */