返回顶部
首页 > 资讯 > 前端开发 > VUE >es6如何获取顶层对象
  • 643
分享到

es6如何获取顶层对象

2024-04-02 19:04:59 643人浏览 薄情痞子
摘要

本篇内容介绍了“es6如何获取顶层对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本篇内容介绍了“es6如何获取顶层对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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

教程操作环境: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如何获取顶层对象”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: es6如何获取顶层对象

本文链接: https://lsjlt.com/news/98613.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • es6如何获取顶层对象
    本篇内容介绍了“es6如何获取顶层对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • ES6顶层对象、global对象的示例分析
    这篇文章将为大家详细讲解有关ES6顶层对象、global对象的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。顶层对象顶层对象,在浏览器环境指的是window对象,...
    99+
    2024-04-02
  • java如何获取对象深层数据
    要获取对象的深层数据,可以使用递归方法来遍历对象的属性。```javapublic class Main {public stati...
    99+
    2023-09-15
    java
  • iOS如何获取最顶层ViewController详解
    1 获取当前屏幕显示的 Viewcontroller //获取当前屏幕显示的viewcontroller - (UIViewController *)getCurrentVC {...
    99+
    2022-05-21
    ios 顶层 viewcontroller
  • java如何获取session对象
    在Java中,可以通过以下方式获取session对象:1. 在JSP页面中:`HttpSession session = reque...
    99+
    2023-09-27
    java session
  • javascript如何获取对象数组
    javascript中获取对象数组的方法:可以使用“getElementsByTagName”方法获取对象数组;语法格式为:“document.getElementsByTagname('li') ”,这里“li”...
    99+
    2024-04-02
  • python如何获取对象信息
    这篇文章主要讲解了“python如何获取对象信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python如何获取对象信息”吧!1、获取对象类型,基本类型可以用type()来判断。>&...
    99+
    2023-06-20
  • node中顶层对象指的是什么
    这篇文章主要介绍了node中顶层对象指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 node的顶层对象...
    99+
    2024-04-02
  • es6如何合并对象
    小编给大家分享一下es6如何合并对象,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! es6合并对象的方法有:1、利用“Object.assign()”方法,语法...
    99+
    2024-04-02
  • ES6对象如何使用
    本篇内容介绍了“ES6对象如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、对象和属性和方法JavaScript中对象:var&nb...
    99+
    2023-06-30
  • Springboot 如何获取上下文对象
    目录Springboot上下文对象获取或者更简单的写法:spring boot获取上下文 随时取出被spring管理的bean对象方法一:方式二:Springboot上下文对象获取 ...
    99+
    2024-04-02
  • python如何获取对象的大小
    这篇文章将为大家详细讲解有关python如何获取对象的大小,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。获取对象的大小内存大小根据对象的类型而变化。 我们可以使用sys模块中的getsizeof()函数获...
    99+
    2023-06-27
  • java中的session对象如何获取
    目录获取session对象1.在springmvc中2.通过ServletActionContext获取在session存取值和对象的方法获取session对象 1.在springm...
    99+
    2024-04-02
  • ES6中如何合并对象
    小编给大家分享一下ES6中如何合并对象,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!合并对象ES6 中新增的拓展运算符,可以用来...
    99+
    2024-04-02
  • JavaScript如何获取对象的所有键
    这篇文章主要为大家展示了“JavaScript如何获取对象的所有键”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript如何获取对象的所有键”这篇文章吧。获取对象的所有键cosnt&...
    99+
    2023-06-27
  • C#如何获取DataTable对象状态DataRowState
    这篇文章将为大家详细讲解有关C#如何获取DataTable对象状态DataRowState,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DataGridView:获取 DataRow ...
    99+
    2023-06-29
  • js如何获取json对象的key值
    本篇内容主要讲解“js如何获取json对象的key值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“js如何获取json对象的key值”吧!JavaScript 对象是由键值对创建的,也不像数组,...
    99+
    2023-06-26
  • SpringBoot如何使用ApplicationContext获取bean对象
    目录使用ApplicationContext获取bean对象SpringBoot Bean注入的深入研究下面代码可正常运行下面代码不能正常运行比较解决方案应用使用Applicatio...
    99+
    2024-04-02
  • SpringBoot 如何从容器中获取对象
    目录如何从容器中获取对象SpringBoot中的容器容器功能1、组件添加2、原生配置文件引入(xml文件引入)3、配置绑定如何从容器中获取对象 有时候在项目中,我们会自己创建一些类,...
    99+
    2024-04-02
  • js如何获取对象的属性名
    要获取对象的属性名,可以使用`Object.keys()`方法。示例代码如下:```javascriptconst obj = {n...
    99+
    2023-08-08
    js
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作