Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lodash源码分析之freeGlobal #125

Open
HeftyKoo opened this issue Mar 11, 2020 · 0 comments
Open

lodash源码分析之freeGlobal #125

HeftyKoo opened this issue Mar 11, 2020 · 0 comments
Labels
internal 内部函数或方法 系列文章

Comments

@HeftyKoo
Copy link
Owner

本文为读 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)

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

作者:对角另一面

@HeftyKoo HeftyKoo added 系列文章 internal 内部函数或方法 labels Mar 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
internal 内部函数或方法 系列文章
Projects
None yet
Development

No branches or pull requests

1 participant