美文网首页
03- global 顶层对象

03- global 顶层对象

作者: 夏海峰 | 来源:发表于2018-08-21 14:44 被阅读25次

    1、从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩

    var 命令和 function 命令声明的全局变量,依旧是顶层对象 window 的属性.
    let 命令、const 命令、class 命令声明的变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。

    var a = 1;
    // window.a;  // 1
    
    let b = 2;
    // window.b;  // undefined
    

    2、顶层对象封装

    浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。Node 里面,顶层对象是 global,但其他环境都不支持。

    功能封装:获取各种不同环境下的js顶层对象

    // 方案1
    let globalObj = (
        typeof window !== 'undefined'
        ? window
        : (typeof process === 'object' && typeof require === 'function' && typeof global === 'object')
        ? global
        : this
    );
    console.log(globalObj);
    
    // 方案2
    var getGlobal = function() {
        if (typeof self !== 'undefined') return self;
        if (typeof window !== 'undefined') return window;
        if (typeof global !== 'undefined') return global;
        throw new Error('unable to locate global object');
    }
    console.log(getGlobal());
    

    system.global垫片库,用于获取js环境下的顶层对象。


    完!!!

    相关文章

      网友评论

          本文标题:03- global 顶层对象

          本文链接:https://www.haomeiwen.com/subject/qufjiftx.html