Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.09.2013, 19:26
Аспирант
Отправить личное сообщение для HJ90 Посмотреть профиль Найти все сообщения от HJ90
 
Регистрация: 24.07.2012
Сообщений: 37

Обновление объекта Date (сокращение кода)
Здравствуйте!

Чтобы получить актуальное время - нужно каждый раз вызывать объект Date.
Но я пишу плагин, где на каждый атрибут есть отдельные функции, с соответствующими методами (getHours, getMinutes).
И не очень то грамотно получается в каждой функции копипастить d = new Date();

Выглядит вот так:
plugin.registerattribute("minutes", "", function(){d = new Date(); minutes = d.getMinutes(); return minutes} );
plugin.registerattribute("seconds", "", function(){d = new Date(); seconds = d.getSeconds(); return seconds} );

Как вариант можно написать отдельную функцию со всеми методами и с одной строкой d = new Date();
Но тогда любой атрибут будет гонять все методы в холостую. Вот так:

plugin.registerattribute("minutes",  "", function(){time(); return minutes} );
plugin.registerattribute("seconds",  "", function(){time(); return seconds} );

function time()
	{
		d = new Date(); 
		  hours    = d.getHours(); 
		  minutes  = d.getMinutes();
		  seconds  = d.getSeconds();
	}

Подскажите пожалуйста есть ли грамотный способ обойтись без копипаста и чтобы все оптимизировано было?
Как-то странно Date устроен.

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 07.09.2013, 19:30
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от HJ90
Как-то странно Date устроен.
Интересный вывод ))
А почему бы просто не new Date().getMinutes() ?
Ответить с цитированием
  #3 (permalink)  
Старый 07.09.2013, 20:31
Аспирант
Отправить личное сообщение для HJ90 Посмотреть профиль Найти все сообщения от HJ90
 
Регистрация: 24.07.2012
Сообщений: 37

Спасибо danik.js

А как можно вернуть результат функции при такой записи?
оно без return не работает:
plugin.registerattribute("seconds",  "", function(){new Date().getSeconds(); });

получается только так, ...а короче уже невозможно?
plugin.registerattribute("seconds",  "", function(){sec = new Date().getSeconds(); return sec});

Цитата:
Интересный вывод
Потому что d = new Date(); делает ссылку на объект Date(); а не копию объекта.
Соответственно результат имел бы браться уже с переменной d без повторного присвоения.
Ну по крайней мере я так думаю...

Последний раз редактировалось HJ90, 07.09.2013 в 20:48.
Ответить с цитированием
  #4 (permalink)  
Старый 07.09.2013, 20:54
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

HJ90 учи основы, ты даже синтаксис не знаешь.
function() { return new Date().getSeconds() }
Сообщение от HJ90
Потому что d = new Date(); делает ссылку на объект Date(); а не копию объекта.
Date - это конструктор, а не тупо объект. new Date() создает новый экземпляр "класса" Date
Ответить с цитированием
  #5 (permalink)  
Старый 07.09.2013, 20:58
Аспирант
Отправить личное сообщение для HJ90 Посмотреть профиль Найти все сообщения от HJ90
 
Регистрация: 24.07.2012
Сообщений: 37

danik.js Спасибо за помощь!
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HTML+JavaScript. использования объекта Date. lilywka Javascript под браузер 1 06.04.2013 21:06
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00