我刚刚在W3School上阅读了关于JS中的类型转换的this article。有代表:日期对象的类型
有3种类型的对象:
- 对象
- 日期
- 阵列
这让我感到困惑,因为据我所知没有Date
对象与任何其他对象之间的任何差异(typeof (new Date())
返回"object"
)。首先,我认为它很特别,因为它包含本机代码,但有几十个本地代码的函数。
这篇文章错了吗?或者有人可以告诉我为什么Date
对象非常特别,它被认为是一种单独的对象类型?
我刚刚在W3School上阅读了关于JS中的类型转换的this article。有代表:日期对象的类型
有3种类型的对象:
- 对象
- 日期
- 阵列
这让我感到困惑,因为据我所知没有Date
对象与任何其他对象之间的任何差异(typeof (new Date())
返回"object"
)。首先,我认为它很特别,因为它包含本机代码,但有几十个本地代码的函数。
这篇文章错了吗?或者有人可以告诉我为什么Date
对象非常特别,它被认为是一种单独的对象类型?
Lemme告诉你一个基本的东西。 W3Schools中的文章绝对过时,因此您绝对不能依赖它。是的,当你把这个控制台:
typeof (new Date())
上面的代码返回object
因为JavaScript有只有几个原始类型:
您可以检查它是否是一个date
对象或不使用:
(new Date()) instanceof Date
上述代码将返回true
。这是检查特定变量是否为特定类型实例的正确方法。
您可能要检查的对象,作为一个特定类型的实例也通过验证其是否具有特定于所涉及的对象类型的方法:
if (myobject.hasOwnProperty("getUTCMilliseconds")) {
// myobject is a Date...
同样的技术可以帮助你识别JavaScript数组:
检查
typeof(myobject)
产量"object"
,不"array"
如果myobject
真的是一个数组,所以我用
if (myobject.hasOwnProperty("slice")) {
// we are dealing with an array here ...
你应该不是真的“信任”是什么'typeof'回报。毕竟,'typeof null'是'“object”':) –
虽然W3School最近有很大的改进,但您不应该相信网站,因为它仍然包含误导性信息。建议改为阅读MDN。 – Raptor
这些内置对象(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects)比那三个更多 - 对于任何特定的对象类型没有什么特别的 - 他们只是API接口。 – Emissary