Why doesn't `{}.toString.apply(array)` work?
<p>Usually, when I want to check the type of an object (whether it's an array, a NodeList, or whatever), I use the following:</p>

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

<p>The question is: why can I <em>not</em> do the following?</p>

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

<p>I don't get where the syntax error is.</p>

<p>I can do something approaching with <code>[]</code> though, the following works:</p>

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

<p>So... I'm confused.</p>
