7

通常、オブジェクトのタイプ (配列、NodeList など) を確認する場合は、次のようにします。

var arr = [] // I don't do this, but it's for the sake of the example
var obj = {}
obj.toString.apply(arr) // This works

問題は、次のことができないのはなぜですか?

var arr = []
{}.toString.apply(arr) // Syntax error: Unexpected token .

構文エラーの場所がわかりません。

私は何かに近づくことができますが[]、次のように動作します:

var nodeList = document.getElementsByClassName('foo')
[].forEach.call(nodeList, function(bar) { console.log(bar) }) // Works

だから...私は混乱しています。

4

1 に答える 1

16

{JavaScriptで行を開始すると、オブジェクト リテラルではなく、ブロック ステートメントを開始すると見なされます。括弧に入れて大丈夫です。

于 2012-04-04T07:01:35.983 に答える