本文为读 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
对象的。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面