Function.prototype.bind polyfill and parametric object creation
<p>Thanks to <code>Function.prototype.bind</code> there's a nice way to create objects with parametric arguments:</p>

<pre><code>var d = new (Function.prototype.bind.apply(Date, [null, 2012, 8, 3]));
console.log(d); // =&gt; Mon Sep 03 2012 00:00:00 + timezone
</code></pre>

<p>Unfortunately, bind isnt supported by IE8 and older, but that's covered by many common polyfills. The <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind#Compatibility" rel="nofollow">one on MDN</a> is perhaps the most common:</p>

<pre><code>Function.prototype.bind = function (oThis) {
    if (typeof this !== "function") {
        // closest thing possible to the ECMAScript 5 internal IsCallable function
        throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
    }

    var aArgs = Array.prototype.slice.call(arguments, 1), 
        fToBind = this, 
        fNOP = function () {},
        fBound = function () {
            return fToBind.apply(this instanceof fNOP &amp;&amp; oThis ? this : oThis,
                           aArgs.concat(Array.prototype.slice.call(arguments)));
        };

    fNOP.prototype = this.prototype;
    fBound.prototype = new fNOP();

    return fBound;
};
</code></pre>

<p>But this causes odd results on IE:</p>

<pre><code>console.log(d); // throws "Date.prototype.toString: 'this' is not a Date object"
</code></pre>

<p>Something similar also for custom classes, not just native objects.</p>

<p>I'm a bit lost in this. Is it possible to solve this just changing the definition of <code>Function.prototype.bind</code>? I fear it's not.</p>
