Node里window=this & window=global差别

console.log(global)
输出:
    <ref *1> Object [global] {
      global: [Circular *1],
      clearInterval: [Function: clearInterval],
      clearTimeout: [Function: clearTimeout],
      setInterval: [Function: setInterval],
      setTimeout: [Function: setTimeout] {
        [Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
      },
      queueMicrotask: [Function: queueMicrotask],
      clearImmediate: [Function: clearImmediate],
      setImmediate: [Function: setImmediate] {
        [Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
      }
    }
console.log(this)
输出:
    {}

thisNodejs里面指的是moudle.exports

小例子

window = global
window.a = 10
console.log(a)
不会报错,可以拿到a
window = this
window.a = 10
console.log(a)
直接报错

过检测

window = global
delete global
window.a = 10
这样可以过掉很多检测
console.log(a)

webpack

整体结构

var result;
!function(n){
    function h(e){
        c = {};
        if (c[e])
            return c[e].exports;
        var t = c[e] = {
            i:e,
            l:!1,
            exports:{}
        };
        return n[e].call(t.exports, t, t.exports, h),
            t.l = !0,
            t.exports
    }
}(
    {
        模块1:function(e,t,n){
            console.log('1111111')
        }
        模块2:function(e,t,n){
            console.log('2222222')
        }
    }
)

想调用模块2里面的 内容

!function(n){
    function h(e){
        c = {};
        if (c[e])
            return c[e].exports;
        var t = c[e] = {
            i:e,
            l:!1,
            exports:{}
        };
        return n[e].call(t.exports, t, t.exports, h),
            t.l = !0,
            t.exports
    }
    result = h
}(
    {
        模块1:function(e,t,n){
            console.log('1111111')
        }
        模块2:function(e,t,n){
            console.log('2222222')
        }
    }
)