2010-05-14 80 views

回答

103

使用的instanceof

(myvar instanceof Date) // returns true or false 
+7

它将为*大多数情况下*工作,但它会失败的多帧DOM环境,请看[本文](http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/)。 – CMS 2010-05-14 04:55:29

+1

我用“无效日期”对它进行了测试,并且它返回了真实状态! – Roshdy 2015-12-07 18:22:47

+0

这不符合预期在我的情况下,我在日期字段中使用DHTMLX日历类型。 – lnepal 2015-12-09 08:25:56

30

Object.prototype.toString.call(obj) === "[object Date]"将在任何情况下工作,obj instanceof Date只会日期对象来自同一个视图实例(window)工作。

+0

嗯,这不会工作,如果你有一些从日期继承的东西,会吗? – Claudiu 2010-05-14 03:22:29

+0

这是Ext JS如何做到的。不确定其他框架,但这就是我所看到的。 – 2010-05-14 03:33:22

+2

@Claudiu:不,但说实话,我认为你永远不需要创建一个从'Date.prototype'继承的对象实例,@ bmoeskau,这是检测对象* kind *最安全的方法由像'Array','RegExp','Date'等内置构造函数所做的其他框架,如jQuery使用它来[检测'Array'对象](http://api.jquery.com/ jQuery.isArray /),[Prototype](http://www.prototypejs.org/api/object/isstring)也使用它来检测包装的原始值,因为这些包装是对象,例如'typeof new String(“”)=='object';'也用于检测Opera。 – CMS 2010-05-14 04:38:16

0

如果(OBJ & & obj.getUTCDay){// 我会像对待一个日期 }

+0

如果碰巧在一个完全不相关的对象上有一个类似的方法叫做“getUTCDay”,即使它不是日期,它也会返回true。 – 2010-05-14 03:54:00

+0

或者更有可能的是,如果某人*在*之后编写了getUTCDay方法,那么他们在某个时间点会有一个很长的调试时间;) – 2010-05-14 04:00:50

-3
if (parseDate("datestring")) 
+1

我假定您意识到这不同于检查一个Date对象类型,这似乎是个问题? – 2010-05-14 03:59:37

+0

oooh !!我误解了这个问题= /我的不好 – GerManson 2010-05-14 04:16:07

相关问题