您现在的位置是:群英 > 开发技术 > web开发
es6获取顶层对象有哪些方式呢?
Admin发表于 2022-09-08 18:02:20513 次浏览
相信很多人对“es6获取顶层对象有哪些方式呢?”都不太了解,下面群英小编为你详细解释一下这个问题,希望对你有一定的帮助

es6获取顶层对象的方式:1、利用“typeof window !== 'undefined' ? window : (...) ? global : this”方法获取;2、利用“var getGlobal = function () {...throw new Error('unable to locate global object');};”方法获取。

如何快速入门VUE3.0:进入学习

本教程操作环境:windows10系统、ECMAScript 6.0版本、Dell G3电脑。

es6获取顶层对象的方式有哪些

ES6之前,顶层对象的属性和全局变量是等价的,但是在ES6,顶层对象和全局对象开始分离。

不分离的弊端

  • 无法在编译阶段就报出变量未声明的错误,只有运行时才知道。

  • 容易在不知不觉中创建全局变量

  • 顶层对象可随意读写

  • window对象有窗口的意思,指的浏览器的窗口对象。而顶层对象有实体意义是一个不合适的设计

改变方式

  • var和function命令声明的全局变量,依旧是顶层对象的属性。

  • let、const、class声明的全局变量,不属于顶层对象的属性。

顶层对象

浏览器:window对象

Node:global对象

不统一的顶层对象

浏览器中 顶层对象是window,但是Node和Web Worker没有window。

浏览器和Web Worker中,self也指向顶层对象,但是Node没有self。

Node中,顶层对象是global,但其他环境不支持。

获取顶层对象

局限性

全局环境中,this返回顶层对象;

Node模块和ES6模块中,this返回当前模块

函数中的this

(1) 单纯作为函数运行,this返回顶层

(2) 严格模式下,返回undefined

new Function(‘return this’)();总是返回全局对象。

但是如果浏览器用了CSP,那么eval,new Function这些方法都可能无法使用

CSP:Content Security Policy,内容安全政策。它以白名单的机制对网站加载或执行的资源起作用,在网页中通过HTTP头信息或者meta元素定义。但是也造成了以下问题

  1. eval及相关函数被禁用。
  2. 内嵌的JavaScript代码将不会执行。
  3. 只能通过白名单来加载远程脚本。

获取顶层对象的方法

// 方法1
// 针对 浏览器中 顶层对象是window,但是Node和Web Worker没有window。
( 
	typeof window !== 'undefined' ? window : (
		typeof process === 'object' &&
		typeof require === 'function' &&
		typeof global === 'object'
	) ? global : this
);

//方法2
// 针对 浏览器和Web Worker中,self也指向顶层对象,但是Node没有self。
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');
};


以上就是关于“es6获取顶层对象有哪些方式呢?”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注群英网络,小编每天都会为大家更新不同的知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: ES6
相关信息推荐
2022-07-30 17:36:41 
摘要:两种实现方法:1、利用key()获取数组第一个元素的下标,语法“key(指定数组)”。2、使用“array_keys(原数组)”语句获取原数组的全部下标,返回包含全部下标的键名数组,再利用“$键名数组名[0]”语句获取键名数组的第一个元素值,也就是原数组第一个元素的下标即可。
2022-06-23 17:03:02 
摘要:​本篇文章给大家带来的内容是关于利用HTML5的details, summary实现各种交互效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
2022-05-11 16:41:35 
摘要:转化方法:1、使用intval()函数,语法“intval($str)”;2、使用floatval()函数,语法“floatval($str)”;3、使用settype()函数,语法“settype($str,"float")”。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部