typeofでは配列、null、Date、クラスインスタンスなどが全てobject
になってしまう。
> typeof("hoge")
'string'
> typeof([])
'object'
> typeof(null)
'object'
> typeof(undefined)
'undefined'
> typeof(new Date())
'object'
その点Object.prototype.toString.call
なら配列、null、Dateなどを識別できる。
> Object.prototype.toString.call("hoge")
'[object String]'
> Object.prototype.toString.call([])
'[object Array]'
> Object.prototype.toString.call(null)
'[object Null]'
> Object.prototype.toString.call(undefined)
'[object Undefined]'
> Object.prototype.toString.call(new Date())
'[object Date]'