不太明白里面的
typeof process === 'object' 和 typeof require === 'function'和global === 'object',并且為什么他們?nèi)染湍茏C明是global對(duì)象
typeof self 是什么意思呢?
為什么他們能實(shí)現(xiàn)一樣的效果?
該例子來自ruan大神
//該函數(shù)證明獲取到頂層對(duì)象
(typeof window !== 'undefined'
? window
: (typeof process === 'object' &&
typeof require === 'function' &&
typeof global === 'object')
? global
: this);
//該函數(shù)證明獲取到頂層對(duì)象
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');
};
謝謝
人生最曼妙的風(fēng)景,竟是內(nèi)心的淡定與從容!
typeof process === 'object' && typeof require === 'function' && typeof global === 'object'
如果為true,且不存在window
對(duì)象時(shí)可以認(rèn)為在node環(huán)境中,node的全局對(duì)象就是global
等價(jià)于瀏覽器中的window
對(duì)象。這個(gè)是node的定義,不太好解釋原因了,如果說原因的話就是開發(fā)node時(shí)就這么起的變量名字吧(笑)
self
(window.self) 返回window
的只讀引用,即為一個(gè)頂層對(duì)象,所以typeof self !== 'undefined'
時(shí),可以認(rèn)為在瀏覽器環(huán)境下獲取到了頂層對(duì)象的一個(gè)只讀引用
typeof global !== 'undefined'
這個(gè)就是獲取的node環(huán)境下的頂層對(duì)象,觀察這兩個(gè)函數(shù),其作用都是獲取頂層對(duì)象,一般來說js較多用到的地方是瀏覽器端(前端)和node端(后臺(tái)),winJS這方面不太了解,畢竟還沒用過win10系統(tǒng)(我承認(rèn)我是懶得換),猜測winJS的頂層對(duì)象應(yīng)該也是window,如有錯(cuò)誤請(qǐng)大家指正。
這個(gè)是證明在 node 里面, node 的全局變量是 global 而不是 window
> typeof process
'object'
> typeof require
'function'
> typeof global
'object'
https://nodejs.org/api/proces...