Bug Tracker

Ticket #2968: 2968.diff

File 2968.diff, 1.1 KB (added by genezys, 12 years ago)

Patch implementing suggested algorithm (simplified and reformatted)

  • src/core.js

     
    614614
    615615        // See test/unit/core.js for details concerning this function.
    616616        isFunction: function( fn ) {
    617                 return !!fn && typeof fn != "string" && !fn.nodeName &&
    618                         fn.constructor != Array && /^[\s[]?function/.test( fn + "" );
     617                return !!fn && ( !jQuery.browser.msie ? fn instanceof Function :
     618                        (function(fn){
     619                                // IE specific test
     620                                if ( fn instanceof Function )
     621                                        return true;
     622                                if ( typeof fn === "string" || fn instanceof String
     623                                        || fn.constructor === Array )
     624                                        return false;
     625                                // Remove toString() and valueOf() overriden methods
     626                                // and dump the function as string
     627                                var s = "toString",
     628                                        v = "valueOf",
     629                                        t = typeof fn[s] === "function" && fn[s],
     630                                        o = typeof fn[v] === "function" && fn[v],
     631                                        r;
     632                                if ( t ) delete fn[s];
     633                                if ( o ) delete fn[v];
     634                                r = /^[\s[]?function/.test(fn + "");
     635                                if ( t ) fn[s] = t;
     636                                if ( o ) fn[v] = o;
     637                                return r;
     638                        })(fn) );
    619639        },
    620640
    621641        // check if an element is in a (or is an) XML document