JavaScript: преобразование в integer
Читая исходники плагина autocomplete для jQuery (документация описывает не всю функциональность плагина), нашёл замечательный небольшой паттерн. Обычный короткий способ преобразовать объект другого типа в число — прибавить к нему ноль или умножить на 1. Но есть способ лучше, оцените:
var extraParams = {
timestamp: +new Date()
}
Просто добавляем знак перед объектом. Просто и изящно.
Пару недель назад то же самое открыл для себя в исходниках Джона Резига :)
Если что — он гений.
http://razetdinov.ya.ru/replies.xml?item_no=636
Комментарий для alisey.myopenid.com:
Autocomplete для jQuery — исходник Джона Резига ;)
Комментарий для razetdinov.ya.ru:
new Number — это очень скучно.
Только недавно нашёл? )
var a = new Date;
a.toSource();
и, внимание, источник всего прельстивого в выражении +new Date — a.valueOf(), который яваскрипт применяет автоматически, когда нужно преобразовать объект в «примитивный» тип данных. Примитивными, насколько я помню, являются null, undefined, числа, строки и булевы значения.
var a = new Date;
a.toSource();
это для интереса, забавно выглядит получаемый результат )
Комментарий для jahson.livejournal.com:
Сегодня нашёл.
Не понял, вот это всё — a.toSource это всё к чему? :)
Комментарий для Евгения Степанищева:
Чтобы увидеть что-то подобное «(new Date(1227879130813))» :)
Такой способ часто используется в Perl, Джон Резиг — не первооткрыватель.
Комментарий для dionys.myopenid.com:
Сколько программировал в Perl, а такого способа не применял. Открывать тут особо нечего, синтаксис позволяет, значит можно делать. Для меня это просто полезный паттерн.
Комментарий для Евгения Степанищева:
Number() и new Number() — разные вещи.
Комментарий для razetdinov.ya.ru:
Whatever
Во избежание заблуждений: в примере Болка timestamp не является правильным unix time, т. к. содержит количество миллисекунд, а не секунд.
Комментарий для razetdinov.ya.ru:
Это пример Резига :)