Только что видел объект фабричного стиля, создающий в JavaScript (без литералов). Что еще мне нужно знать? - PullRequest
2 голосов
/ 30 мая 2010

Я только что видел это в коде

var thisYear = (new Date()).getFullYear();

Посмотреть вживую на JSbin .

Это круто, так как я всегда делал что-то подобное в 2 строки, то есть создавал новый экземпляр объекта и назначал его переменной, затем вызывал для него метод.

Можно ли использовать этот новый метод везде? Есть какие-нибудь ошибки?

Ответы [ 2 ]

4 голосов
/ 30 мая 2010

Это не ново, но да, это безопасно. Вам на самом деле не нужны скобки:

new Date().getFullYear();

new Date() и (new Date()) - оба выражения, которые оценивают объект Date, для которого можно свободно вызывать методы.

Вы можете даже вызывать методы напрямую по номерам:

(1000).toExponential()

В этом случае вам нужны парены.

3 голосов
/ 30 мая 2010

Шаблон создания объекта и вызова его методов без промежуточного присваивания - все в порядке, проблем нет.

Однако с датами нужно быть осторожным, чтобы не сделать следующее:

var hours = new Date().getHours();
var minutes = new Date().getMinutes(); //Say at, 15:30:59
var seconds= new Date().getSeconds();  //Some ticks passed, now it's 15:31:00

var time = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" +  (seconds < 10 ? "0" + seconds : seconds);
alert(time); //Oops, it's 15:30:00!

Пример надуманный, но хорошо иметь в виду, что вы используете контекстно-зависимый объект, иногда вы хотите, чтобы один экземпляр выполнял несколько операций. Не говоря уже о том, что это дешевле:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...