ES6基本用法(顶层对象的属性)

本文摘抄于阮一峰老师的《ECMAScript 6 入门》(http://es6.ruanyifeng.com/)
浏览器的顶层对象指的是window对象,node指的是global对象。顶层对象的属性和全局变量是等价的。

ES6基本用法(顶层对象的属性)_第1张图片
Paste_Image.png

如图a是全局变量,是顶层对象的属性,b由let声明,不是顶层对象属性。

global属性

ES5:
-浏览器顶层对象是window,node和web worker没有window。
-浏览器和web worker,self只想顶层对象,node无self
-node顶层对象是gobal,其他环境不支持
ES6:
-全局环境中,this会返回顶层对象。但是,Node模块和ES6模块中,this返回的是当前模块。
-函数里面的this,如果函数不是作为对象的方法运行,而是单纯作为函数运行,this会指向顶层对象。但是,严格模式下,这时this会返回undefined。
-不管是严格模式,还是普通模式,new Function('return this')(),总是会返回全局对象。但是,如果浏览器用了CSP(Content Security Policy,内容安全政策),那么eval、new Function这些方法都可能无法使用。
下面是在所有情况下的拿到顶层对象global:

ES6基本用法(顶层对象的属性)_第2张图片
Paste_Image.png

你可能感兴趣的:(ES6基本用法(顶层对象的属性))