美文网首页
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 顶层对象

    1、从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩 var 命令和 function 命令声明的全局变量,依...

  • 关于var、let的顶层对象的属性

    顶层对象 ,在浏览器环境指的是 window 对象,在 Node 指的是 global 对象。ES5 之中,顶层对...

  • 顶层对象属性与全局变量

    顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与...

  • (阮一峰)顶层对象的属性

    顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与...

  • js顶层对象的属性

    顶层对象,在浏览器环境指的是window对象,在Node指的是global对象。ES5之中,顶层对象的属性与全局变...

  • let 和 const 命令

    let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...

  • let 和 const 命令

    let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...

  • ECMAScript 6 - 全局对象的属性

    全局对象是最顶层的对象,在浏览器环境指的是window对象,在Node.js指的是global对象。ES5之中,全...

  • (二)ES6第一节变量(let,const)

    (一) 本节知识点 let命令 块级作用域 const命令 顶层对象的属性 global对象 (二) LET知识点...

  • 前端小白的ES6学习

    作为一个coder,说啥都不及代码实在,废话不多讲上代码: global 对象 ES5 的顶层对象,本身也是一个...

网友评论

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

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