繁体   English   中英

刚刚看到了用JavaScript创建的工厂样式对象(没有文字)。 我还需要知道什么?

[英]Just seen a factory style object creating in JavaScript (without literals). What else do I need to know?

我刚刚在代码中看到了

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

在JSbin上实时查看

这很酷,因为我总是在两行中完成类似的操作,即创建新的对象实例并将其分配给变量,然后在其上调用方法。

这种新方法在任何地方都可以使用吗? 有问题吗?

这不是什么新鲜事,但是是安全的。 您实际上也不需要括号:

new Date().getFullYear();

new Date()(new Date())都是计算为Date对象的表达式,您可以在上面自由调用方法。

您甚至可以直接在数字上调用方法:

(1000).toExponential()

在这种情况下,您确实需要括号。

在没有中间分配的情况下实例化对象并调用其方法的模式是A-OK,在那里没有问题。

但是,对于日期,必须注意不要执行以下操作:

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!

该示例是人为设计的,但是如果您使用的是上下文感知对象,则请牢记这一点,有时您希望单个实例执行多项操作。 更不用说它更便宜的事实了:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM