1

ここからこの質問に進みます: Checking for undefined

オブジェクトが であるかどうかを知りたかったのですが、オブジェクトが の単なるサブクラスではなく、Array明確に であるかどうかをテストする必要があります。ObjectObject

現時点Arrayでは、 が のインスタンスであるかどうかをチェックすると、 が true を返すためObjectです。true と評価される他のタイプはありますか?

ここに画像の説明を入力

追加情報

toString1 つの文字列要素を持つ を呼び出すと、Arrayその文字列要素に解決されないことがわかりました"[object Array]"。そのため、注意する必要があります。例えば:

["str1", "str2"].toString() === "[object Array]"

しかし

["str1"].toString() === "str1"
4

1 に答える 1

2

次のようにテストします。

if ({}.toString.call(obj) == '[object Object]') {
  // is object
}

if ({}.toString.call(obj) == '[object Array]') {
  // is array
}

obj任意のオブジェクトです。RegExp、などのオブジェクトと同じです。古い IE では、適切に動作させるためにDate必要な場合があります。({})

デモ: http://jsbin.com/exofup/2/edit

于 2013-03-18T03:50:02.803 に答える