在本教程中,我们推荐了几种检查传递给方法的参数是否为 Date 类型的方法。
有一个可行且可能是检查对象类的最佳解决方案:
Object.prototype.toString.call(input) === '[object Date]'
例子:
let isDate = function (input) { if (Object.prototype.toString.call(input) === "[object Date]") return true; return false; }; console.log(isDate("April 14, 2016 11:15:00")); console.log(isDate(new Date(96400000))); console.log(isDate(new Date(89, 5, 11, 10, 23, 20, 0))); console.log(isDate([1, 3, 5, 0]));
还有一些其他的方法。
其中之一是使用 instanceof 运算符,如下所示:
date instanceof Date
例子:
let myDate = new Date(); console.log(myDate instanceof Date);
但是,对于无效日期,它也会返回 true,例如,new Date('random_string') 也是 Date 的一个实例。
如果对象跨帧边界传递,这将失败。
还有另一种解决方案建议检查对象是否具有 getMonth() 属性:
let dt = new Date("March 14, 1982 23:15:00"); if (dt.getMonth) { let month = dt.getMonth(); console.log(month); }
但是,如果我们想检查它是否是 Date ,而不仅仅是具有 getMonth() 函数的对象,请使用以下命令:
let dt = new Date("April 14, 2016 13:12:00"); function isValidDate(value) { let dateWrapper = new Date(value); console.log(!isNaN(dateWrapper.getDate())); } isValidDate(dt)
给定的代码将创建值的副本(如果它是日期),或者创建一个无效的日期。
然后我们可以检查新日期的值是否无效。
toString() 方法
所有对象都有一个 toString() 方法,当对象应该表示为文本值时,或者以期望字符串的方式引用对象时,会调用该方法。
每个对象都继承了从 Object 继承的方法。
如果未在自定义对象中覆盖,则 toString() 方法返回“[对象类型]”,其中 type 是对象的类型。
日期:2020-06-02 22:16:11 来源:oir作者:oir