Неправильные компоненты даты автоматически распределяются по остальным.

Преобразование к числу, разность дат

Когда объект Date используется в числовом контексте, он преобразуется в количество миллисекунд. Даты можно вычитать, результат вычитания объектовDate– их временная разница, в миллисекундах. Это используют для измерения времени:

var start = new Date;

for (var i = 0; i < 100000; i++) {

var doSomething = i * i * i;

}

var end = new Date;

alert( "Цикл занял " + (end - start) + " ms" );

Форматирование и вывод дат

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

Это делается вызовом date.toLocaleString(локаль, опции), в котором можно задать много настроек. Он позволяет указать, какие параметры даты нужно вывести, и ряд настроек вывода, после чего интерпретатор сам сформирует строку. Пример с почти всеми параметрами даты и русским, затем английским (США) форматированием:

var date = new Date(2014, 11, 31, 12, 30, 0);

var options = {

era: 'long',

year: 'numeric',

month: 'long',

day: 'numeric',

weekday: 'long',

timezone: 'UTC',

hour: 'numeric',

minute: 'numeric',

second: 'numeric'

};

date.toLocaleString("ru", options); // среда, 31 декабря 2014 г. н.э. 12:30:00

date.toLocaleString("en-US", options); // Wednesday, December 31, 2014 Anno Domini 12:30:00 PM

Методы вывода без локализации:

toString(), toDateString(), toTimeString() - возвращают стандартное строчное представление, не заданное жёстко в стандарте, а зависящее от браузера. Единственное требование к нему – читаемость человеком. Метод toString возвращает дату целиком, toDateString() и toTimeString() – только дату и время соответственно.

Метод Date.now()

Метод Date.now() возвращает дату сразу в виде миллисекунд.

16. Объект как хеш-таблица.

Определение объекта в JavaScript

Объект представляет собой неупорядоченный набор пар вида «ключ-значение». Каждая такая пара называется свойством объекта (функции называются методами), каждое свойство должно иметь уникальное имя, которое может быть строкой или числом. Значение свойства может быть любым: как значением простого типа, так и другим объектом.

Простой пример объекта в JavaScript:

var person = {

firstName: 'Frank',

lastName: 'Johnson'

};

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

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

В JavaScript существует три способа создания объектов: с помощью литерала объекта, с помощью конструктора Object и с помощью метода Object.create (последний способ предусмотрен только в стандарте ECMAScript 5).

Литералы объектов

Литерал объекта представляет собой фигурные скобки, внутри которых через запятую перечислены свойства:

// Пример пустого объектаvar emptyObject = {}; // Объект, имеющий свойстваvar cat = { color: 'gray', age: 2, say: function() { console.log('Miu miu'); },}

Конструктор Object

Второй способ создания объектов в JavaScript — использование конструктора Object:

var cat = new Object();cat.color = 'gray';cat.age = 2;cat.say = function() { console.log('Miu miu');}

Метод Object.create()

Этот метод принимает один обязательный параметр — прототип создаваемого объекта, и второй необязательный — список свойств объекта. Чтобы создать объект без прототипа, можно вызвать метод Object.create() c параметром null. Рассмотрим примеры:

// Создание объекта, не имеющего прототипаvar emptyObject = Object.create(null); // Объект car наследует свойства wheels и speedvar car = Object.create({ wheels: 4, speed: 100 }); // Пустой объект с прототипом Object.prototype (аналог new Object() или {})var myObject = Object.create(Object.prototype);

Доступ к свойствам объекта

Получить значение свойства объекта можно, указав имя свойства через точку:

console.log(cat.color);

Или указав имя свойства в квадратных скобках:

console.log(cat[color]);

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

Если мы пытаемся обратиться к свойству объекта, которого не существует — будет возвращено значение undefined. Однако попытка получить свойство значения null или undefined вызовет ошибку.

Объект имеет как собственные свойства (определенные в нем), так и унаследованные (определенные в цепочке прототипов). Проверить, имеет ли объект определенное свойство (собственное или унаследованное), можно с помощью оператора in:

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

var cat = { color: 'gray' };

// Проверяем, существует ли свойство 'color'

console.log('color' in cat); // true

// Проверяем, существует ли свойство toString (существует в прототипе Object.prototype)

console.log('toString' in cat); // true

Если нужно проверить только собственные свойства объекта, можно использовать метод hasOwnProperty():

console.log(cat.hasOwnProperty('color')); // true

console.log(cat.hasOwnProperty('toString')); //false

Также получить свойства объекта можно в цикле:

var person = {

name: 'John',

lastName: 'Smith',

age: 32

};

for (var item in person) {

console.log(item);

}

Чтобы удалить свойство объекта, можно воспользоваться оператором delete. Оператор delete возвращает истину, если удаление прошло успешно. Он также возвращает истину, если свойство не существует или не может быть удалено.

Наши рекомендации