有没有办法检查变量是否是JavaScript中的日期?

Kyl*_*iss 71 javascript date typechecking

我想知道是否有任何方法可以检查对象是否特别是JavaScript中的日期.isType返回Date的对象,这对于此方案是不够的.有任何想法吗?谢谢!

Bru*_*oLM 137

使用instanceof

(myvar instanceof Date) // returns true or false
Run Code Online (Sandbox Code Playgroud)

  • 它适用于*大多数情况*,但它会在多帧DOM环境中失败,请看[本文](http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write -a-鲁棒IsArray的/). (8认同)
  • 我用“无效日期”对其进行了测试,结果为真!! (3认同)

Eli*_*rey 34

Object.prototype.toString.call(obj) === "[object Date]"将在每种情况下都有效,并且obj instanceof Date只能在同一视图实例(window)中的日期对象中工作.

  • @Claudiu:不,但老实说,我认为你永远不需要创建一个继承自`Date.prototype` ...的对象实例,@ bmoeskau,这是检测对象*类*的最安全的方法.通过内置的构造函数,如`Array`,`RegExp`,`Date`等...其他框架,比如jQuery使用它来[检测`Array`对象](http://api.jquery.com/jQuery .isArray /),[Prototype](http://www.prototypejs.org/api/object/isstring)也将它用于此并检测包装的原始值,因为那些包装器是对象,例如`typeof new String(" ")=='object';`以及检测Opera. (2认同)