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

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

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:

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容