技術的には、配列はオブジェクトであるので、このコード」
if(Object.prototype.toString.call(someVar) === '[object Array]') {
で混乱していますあなたがtypeof arrayVar
を行うときは、object
を得るが、それはオブジェクトのクラスになどの特定ではありません。
あなたがオブジェクトprototype.toString()
を見たときしかし、それはまた、「オブジェクト」を返しますが、あなたは、オブジェクトのプロトタイプを見たとき、およびパスオブジェクト内では、オブジェクトとオブジェクトのクラスを返します。
あなたはそれがObject.prototype.toStringメソッドについて言うこと
ECMAScript5 spec (§15.2.4.2)で見ることができます
:
toStringメソッドが呼び出されると、次のステップが取られています。
- この場合値が未定義の場合は、 "[未定義のオブジェクト]"を返します。
- この値がnullの場合、 "[object Null]"を返します。
- この値を引数として渡すToObjectを呼び出した結果をOとします。
- classをOの[[Class]]内部プロパティの値にします。
- 3つのString "[object"、class、 "]"を連結した結果のString値を返します。
最後の1つは「方法」に対する答えです。
あなたがリンクしているQAには、Crowderの**完全な**説明へのリンクがあります:http://blog.niftysnippets.org/2010/09/say-what.htmlだから、何が欠けているのかは分かりません君は。 –
BTW [Array.isArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Browser_compatibility)のおかげで、これは現在アレイでは廃止されています。 –
@ DenysSeguret私は非常に興味深い簡単なリンクを行っていません..... –