diff --git a/build.js b/build.js index 10e7aa384..0e99c29fa 100755 --- a/build.js +++ b/build.js @@ -584,12 +584,19 @@ var source = [ ';(function(window) {', - " var freeExports = typeof exports == 'object' && typeof require == 'function' && exports;", + ' var undefined;', '', - " var freeModule = typeof module == 'object' && module && module.exports == freeExports && module;", + ' var objectTypes = {', + " 'function': true,", + " 'object': true", + ' };', '', - " var freeGlobal = typeof global == 'object' && global;", - ' if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {', + " var freeExports = objectTypes[typeof exports] && typeof require == 'function' && exports;", + '', + " var freeModule = objectTypes[typeof module] && module && module.exports == freeExports && module;", + '', + " var freeGlobal = objectTypes[typeof global] && global;", + ' if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {', ' window = freeGlobal;', ' }', '', diff --git a/lodash.js b/lodash.js index a11c7d3a5..c74a96f1d 100644 --- a/lodash.js +++ b/lodash.js @@ -11,18 +11,6 @@ /** Used as a safe reference for `undefined` in pre ES5 environments */ var undefined; - /** Detect free variable `exports` */ - var freeExports = typeof exports == 'object' && exports; - - /** Detect free variable `module` */ - var freeModule = typeof module == 'object' && module && module.exports == freeExports && module; - - /** Detect free variable `global`, from Node.js or Browserified code, and use it as `window` */ - var freeGlobal = typeof global == 'object' && global; - if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { - window = freeGlobal; - } - /** Used to pool arrays and objects used internally */ var arrayPool = [], objectPool = []; @@ -146,6 +134,18 @@ '\u2029': 'u2029' }; + /** Detect free variable `exports` */ + var freeExports = objectTypes[typeof exports] && exports; + + /** Detect free variable `module` */ + var freeModule = objectTypes[typeof module] && module && module.exports == freeExports && module; + + /** Detect free variable `global`, from Node.js or Browserified code, and use it as `window` */ + var freeGlobal = objectTypes[typeof global] && global; + if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) { + window = freeGlobal; + } + /*--------------------------------------------------------------------------*/ /**