顶层对象,在浏览器中指的是window,在node环境中指的是global对象.
在ES5环境中,通过var声明的变量能够通过window对象获取到,
各种环境中顶层对象的区分
1.浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。
2.浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。
3.Node 里面,顶层对象是global,但其他环境都不支持。
你好,Node.js归根到底还是JS,在JS中所有的变量都是对象,我们可以通过typeof方法得到一些简单数据类型变量的具体类型,比如:
var str = 'abc',num = 123
console.log(typeof abc) // string
console.log(num) // number
但是对于一些复杂对象,我们再使用typeof只能得到object,比如:
var obj = {},arr = []
console.log(typeof obj) // object
console.log(typeof arr) // object
如果要得到这类复杂类型的具体类型,可以使用下面这个方法:
function isObject(obj){return Object.prototype.toString.call(obj) === '[object Object]'
}
function isArray(arr) {
return Object.prototype.toString.call(arr) === '[object Array]'
}
// Test
var obj = {},
arr = []
console.log(isObject(obj)) // true
console.log(isArray(arr)) // true
另外,ES5之后给Array对象增加了isArray方法,你也可以酌情使用:
var arr = []Array.isArray(arr) // true
好了,最后附一张图,说明一切~~
希望是你想要的答案,望采纳~