What's the point of "var t = Object(this)" in the official implementation of forEach?
<p><a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach" rel="nofollow">According to the MDC</a>, the ECMA-262, 5th edition gives the implementation of forEach as:</p>

<pre><code>if (!Array.prototype.forEach)
{
  Array.prototype.forEach = function(fun /*, thisp */)
  {
    "use strict";

    if (this === void 0 || this === null)
      throw new TypeError();

    var t = Object(this);
    var len = t.length &gt;&gt;&gt; 0;
    if (typeof fun !== "function")
      throw new TypeError();

    var thisp = arguments[1];
    for (var i = 0; i &lt; len; i++)
    {
      if (i in t)
      fun.call(thisp, t[i], i, t);
    }
  };
}
</code></pre>

<p>Can anyone tell me what the line "var t = Object(this)" is doing? How does Object(this) differ from plain this? And what work is that difference doing here?</p>
