如何高效地检查变量是否为数组或对象(在NodeJS和V8中)?
- 论坛
- 如何高效地检查变量是否为数组或对象(在NodeJS和V8中)?
17 浏览
如何高效地检查变量是否为数组或对象(在NodeJS和V8中)?
在NodeJS和V8中,有没有有效的方法来检查变量是否为对象或数组?
我正在为MongoDB和NodeJS编写一个模型,为了遍历对象树,我需要知道对象是简单的(数字、字符串,...)还是复合的(哈希、数组)。
看起来V8有一个快速内置的Array.isArray
,但是如何检查对象是否是一个对象呢?我的意思是像哈希{}
或类的实例这样的复杂对象,而不是像new String()
这样的东西?
通常可以这样做:
Object.prototype.toString.call(object) == "[object Object]"
或者这样:
object === Object(object)
但是似乎这些操作不是很便宜,也许有更高效的方法?如果它不是通用的并且不能在所有引擎上工作,那也没关系,我只需要在V8上工作即可。