一窥JavaScript中的global对象

缘由:

最近写代码的时候发现可以不用引用就可以调用一些全局方法,
这些方法是项目封装的一些公共方法,
然后就想看看这个项目是如何把这些公共方法挂在到全局的,
这一看不知道,看了吓一跳.

过程:

  1. 先找到这些公共方法的所在文件
  2. 然后发现这些文件被引入到了一个叫globa 的文件夹下
  3. golbal 在未被声明的情况下,直接将全局方法挂载在global 的属性下面
  4. global 文件引入App.js 实现公共方法挂载到全局

疑问:

过程3中 golbal为何在未被声明的情况下,可以将全局方法挂在到下面

 import { generateUUID, GetParam, UFormatter,ServiceTime } from 'plugins/common'
	global.generateUUID = generateUUID;
	global.GetParam = GetParam;
	global.ServiceTime = ServiceTime;
	global.UFormatter = UFormatter;

可以看到,这里的代码根本没有声明global对象

结果:

  1. 在浏览器中直接打印global,直接报错
    在这里插入图片描述
  2. 鼠标放到globa上面,vscode会弹出global属于module的引用
    在这里插入图片描述
  3. 点开module引用的文件
  4. 发现global的接口定义
  5. 可以看到很多JavaScript的基础类型和我们平时可以直接引用的属性方法,都挂在到他的下面
    在这里插入图片描述

思考:

1.我们平时不靠引用直接使用的 Date(),parseInt(),clearTimeout()等方法 是否均来自于global?

显然,确实是这样,这下属性全部挂在到 global 下,
未经声明的引用,确实会找到global 下面的属性

global是不能直接访问的,但是它下面的属性确实可以直接访问

**《JavaScript高级程序设计》**中谈到,global对象可以说是ECMAScript中最特别的一个对象了,因为不管你从什么角度上看,这个对象都是不存在的。从某种意义上讲,它是一个终极的“兜底儿对象”,换句话说呢,就是不属于任何其他对象的属性和方法,最终都是它的属性和方法。

我的理解是:global对象,在整个JavaScript中相当于一样的存在,你直接调用它是调用不了的,但是它确实创造了很多可以被调用的属性和方法,这些属性方法都属于global对象,我们调用那些未经引用的属性方法,都会找到这个,然后如果属于他所创造的方法,那么它就能帮你解决这个问题
如果不属于他的属性方法,那么他也无法替你解决,毕竟只做管最基本秩序规则,而我们只需要在这个秩序之下做好自己的事情就行.

参考: https://blog.csdn.net/chenchunlin526/article/details/78908592

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值