Дата против новой даты в JavaScript
14897 просмотра
8 ответа
new Date()
берет порядковый номер и возвращает Date
объект.
Что делает Date()
, и почему это дает другое время?
>>> new Date(1329429600000)
Date {Fri Feb 17 2012 00:00:00 GMT+0200 (القدس Standard Time)}
>>> Date(1329429600000)
"Tue Mar 06 2012 15:29:58 GMT+0200 (Jerusalem Standard Time)"
Автор: Jonathan
Источник
Размещён: 12.11.2019 09:55
Ответы (8)
102 плюса
Из спецификации :
Когда
Date
вызывается как функция, а не как конструктор, он возвращает строку, представляющую текущее время (UTC).
а также:
Когда
Date
вызывается как частьnew
выражения, это конструктор: он инициализирует вновь созданный объект.
Таким образом, new Date(...)
возвращает объект, который obj instanceof Date
является истинным, тогда как в Date(...)
основном возвращает то же самое, что и new Date().toString()
.
18 плюса
new Date
создает новый объект Date, который вы можете изменить или инициализировать с другой датой, в то время как Date
возвращает строку текущей даты / времени, игнорируя ее аргументы.
6 плюса
Проверьте JavaScript Date для быстрого ознакомления с API и проверки кода. Вы видите, что Date()
вызываемая функция new
не принимает никаких параметров и всегда возвращает string
представление текущей даты / времени. Если вы измените образец следующим образом:
console.log(Date());
console.log(Date(1329429600000));
Вы найдете, что результаты для обоих одинаковы (потому что JavaScript игнорирует дополнительные аргументы, передаваемые функциям):
Wed Apr 11 2012 09:58:11 GMT-0700 (PDT)
Wed Apr 11 2012 09:58:11 GMT-0700 (PDT)
Автор: nkron
Размещён: 11.04.2012 05:23
2 плюса
new Date()
возвращает дату на основе входного параметра и Date()
возвращает текущую дату в браузере.
2 плюса
Дата позволяет вам создавать объекты, которые представляют дату / время. Он НЕ предназначен для вызова как функции. Вы можете получить больше информации здесь: Дата - MDN
Автор: mav Размещён: 06.03.2012 01:381 плюс
Date
Класс может быть вызван как конструктор или как метод, чтобы иметь встроенный код, например:
function Date(args){
if (this.constructor == Date){
// if you call : new Date(args)
}else{
// if you call as method : Date()
return new Date()
}
}
Таким образом, если вы вызвали его как метод, он повторно вызовет конструктор для возврата текущей даты и времени.
Автор: Abdennour TOUMI Размещён: 03.12.2014 01:001 плюс
Это 2017 год, и у меня был такой же вопрос. Что я нашел в качестве ответа после прочтения:
«Самый простой способ выполнить явное преобразование типов - это использовать функции Boolean (), Number (), String () или Object (). Мы уже видели эти функции как конструкторы для объектов-оболочек. Когда они запускаются без нового оператор, однако, они работают как функции преобразования и выполняют преобразования типов .. "
«Встроенные классы базового JavaScript пытаются преобразовать valueOf () перед преобразованием toString (), за исключением класса Date, который выполняет преобразование toString ()».
Поэтому Date (), вызываемая без нового ключевого слова, выполняет преобразование типа. А поскольку Date является объектом и объект-примитив должен произойти, объекты Date по умолчанию вызывают toString () (хотя Date также имеет значимый метод valueOf ()).
Обнаружил это в книге «JavaScript: Полное руководство». Оставляя это здесь для будущих поколений, которые только начали изучать JS :)
Автор: pollx Размещён: 16.04.2017 08:560 плюса
Вызывать конструктор как функцию совершенно неправильно, он будет (возможно) делать неожиданные вещи с областью применения вашего приложения, и очень скоро вы будете в центре внимания в групповом сеансе исправления ошибок.
Создайте объект Date, как задумано разработчиками спецификации, не кодируйте обходные пути, реализованные в качестве мер безопасности инженерами, которые считают программистов JS глупыми. (работал в лаборатории, во время разговора сидел на следующем стуле, занимался этим и двигался дальше)
Если вы безумно против новичков, вы можете попробовать object.create, но на момент написания он работает медленнее, и если вы не планируете реализовать полиморфное наследование, тогда это дополнительные усилия для меньшего вознаграждения.
Автор: S.Munkhey Размещён: 14.10.2014 09:10Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- javascript Удаление элементов с помощью Array.map в JavaScript
- javascript Прокрутка переполненных DIV с помощью JavaScript
- javascript API Карт Google - проблемы с классом GLatLngBounds
- javascript Проверка десятичных чисел в JavaScript - IsNumeric ()
- javascript Как я могу украсить код JavaScript с помощью командной строки?
- javascript Динамически загружать файл JavaScript
- javascript Экранирование строк HTML с помощью jQuery
- javascript Обнаружение неопределенного свойства объекта
- javascript Как сравнить HTML-сущность с JQuery
- javascript Есть ли HTML напротив <noscript>?
- javascript Есть ли функция "существует" для jQuery?
- javascript Как заставить клиентов обновлять файлы JavaScript?
- javascript Замена n-го экземпляра совпадения с регулярным выражением в Javascript
- javascript Сделать окно браузера мигающим в панели задач