All Downloads are FREE. Search and download functionalities are using the official Maven repository.

qunit-mojo.shimBind.js Maven / Gradle / Ivy

/*global define */

define([], function() {
    var Ap = Array.prototype,
        slice = Ap.slice,
        Fp = Function.prototype;

    if (!Fp.bind) {
        // PhantomJS doesn't support Function.prototype.bind natively, so
        // polyfill it whenever this module is required.
        Fp.bind = function(context) {
            var func = this,
                args = slice.call(arguments, 1);

            function bound() {
                var invokedAsConstructor = func.prototype && (this instanceof func);
                return func.apply(
                    // Ignore the context parameter when invoking the bound function
                    // as a constructor. Note that this includes not only constructor
                    // invocations using the new keyword but also calls to base class
                    // constructors such as BaseClass.call(this, ...) or super(...).
                    !invokedAsConstructor && context || this,
                    args.concat(slice.call(arguments))
                );
            }

            // The bound function must share the .prototype of the unbound
            // function so that any object created by one constructor will count
            // as an instance of both constructors.
            bound.prototype = func.prototype;

            return bound;
        };
    }

});




© 2015 - 2024 Weber Informatics LLC | Privacy Policy