javascript - 咨询关于typeof判断process和require

查看:141
本文介绍了javascript - 咨询关于typeof判断process和require的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

不太明白里面的

  1. typeof process === 'object' 和 typeof require === 'function'和global === 'object',并且为什么他们全等就能证明是global对象

  2. typeof self 是什么意思呢?

  3. 为什么他们能实现一样的效果?

该例子来自ruan大神

//该函数证明获取到顶层对象
(typeof window !== 'undefined'
   ? window
   : (typeof process === 'object' &&
      typeof require === 'function' &&
      typeof global === 'object')
     ? global
     : this);

//该函数证明获取到顶层对象
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');
};

谢谢

解决方案

  1. typeof process === 'object' && typeof require === 'function' && typeof global === 'object'
    如果为true,且不存在window对象时可以认为在node环境中,node的全局对象就是global等价于浏览器中的window对象。这个是node的定义,不太好解释原因了,如果说原因的话就是开发node时就这么起的变量名字吧(笑)

  2. self(window.self) 返回window的只读引用,即为一个顶层对象,所以typeof self !== 'undefined'时,可以认为在浏览器环境下获取到了顶层对象的一个只读引用

  3. typeof global !== 'undefined'这个就是获取的node环境下的顶层对象,观察这两个函数,其作用都是获取顶层对象,一般来说js较多用到的地方是浏览器端(前端)和node端(后台),winJS这方面不太了解,毕竟还没用过win10系统(我承认我是懒得换),猜测winJS的顶层对象应该也是window,如有错误请大家指正。

这篇关于javascript - 咨询关于typeof判断process和require的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆