Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

JavaScript: преобразование в integer

Читая исходники плагина autocomplete для jQuery (документация описывает не всю функциональность плагина), нашёл замечательный небольшой паттерн. Обычный короткий способ преобразовать объект другого типа в число — прибавить к нему ноль или умножить на 1. Но есть способ лучше, оцените:

var extraParams = {
    timestamp: +new Date()
}

Просто добавляем знак перед объектом. Просто и изящно.

14 комментариев
Alisey (alisey.myopenid.com) 2008

Пару недель назад то же самое открыл для себя в исходниках Джона Резига :)
Если что — он гений.

Азат Разетдинов (razetdinov.ya.ru) 2008
Евгений Степанищев (bolknote.ru) 2008

Комментарий для alisey.myopenid.com:

Autocomplete для jQuery — исходник Джона Резига ;)

Евгений Степанищев (bolknote.ru) 2008

Комментарий для razetdinov.ya.ru:

new Number — это очень скучно.

jahson.livejournal.com 2008

Только недавно нашёл? )
var a = new Date;
a.toSource();

и, внимание, источник всего прельстивого в выражении +new Date — a.valueOf(), который яваскрипт применяет автоматически, когда нужно преобразовать объект в «примитивный» тип данных. Примитивными, насколько я помню, являются null, undefined, числа, строки и булевы значения.

jahson.livejournal.com 2008

var a = new Date;
a.toSource();

это для интереса, забавно выглядит получаемый результат )

Евгений Степанищев (bolknote.ru) 2008

Комментарий для jahson.livejournal.com:

Сегодня нашёл.

Не понял, вот это всё — a.toSource это всё к чему? :)

jahson.livejournal.com 2008

Комментарий для Евгения Степанищева:

Чтобы увидеть что-то подобное «(new Date(1227879130813))» :)

dionys.myopenid.com 2008

Такой способ часто используется в Perl, Джон Резиг — не первооткрыватель.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для dionys.myopenid.com:

Сколько программировал в Perl, а такого способа не применял. Открывать тут особо нечего, синтаксис позволяет, значит можно делать. Для меня это просто полезный паттерн.

Азат Разетдинов (razetdinov.ya.ru) 2008

Комментарий для Евгения Степанищева:

Number() и new Number() — разные вещи.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для razetdinov.ya.ru:

Whatever

Азат Разетдинов (razetdinov.ya.ru) 2008

Во избежание заблуждений: в примере Болка timestamp не является правильным unix time, т. к. содержит количество миллисекунд, а не секунд.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для razetdinov.ya.ru:

Это пример Резига :)