lodash源码分析之freeGlobal

本文为读 lodash 源码的第一百二十四篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash

gitbook也会同步仓库的更新,gitbook地址:pocket-lodash

源码分析

freeGlobal 是用来在 node 环境中捕获 global 变量,这个 global 变量有点相当于浏览器环境中的 window 对象。

const freeGlobal = typeof global === 'object' && global !== null && global.Object === Object && global

export default freeGlobal

首先 global 必须是一个 object ,而且不能为 null

接着判断 global.Object 是否和全局的 object 构造函数相同,如果相同,则这个很大概率就是全局的 global 对象了。

如果前面的判断都为 true,则将 global 对象返回。

但是这个检测也是有缺陷的,因为 global 并不是 js 中的保留词,因为如果在浏览器中这样定义:

var global = {
  Object: Object
}

也是可以冒充 global 对象的。

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:

作者:对角另一面

results matching ""

    No results matching ""