Есть ли способ эффективно проверить, является ли переменная Object или Array, в NodeJS & V8?
Я пишу модель для MongoDB и NodeJS, и для обхода дерева объектов мне нужно знать, является ли объект простым (Number, String, ...) или составным (Hash, Array).
Кажется, что V8 имеет быструю встроенную Array.isArray
, но как проверить, является ли объект Объектом? Я имею в виду сложный объект, такой как хэш {}
или экземпляр класса, а не что-то вроде new String()
?
Обычно это можно сделать так:
Object.prototype.toString.call(object) == "[object Object]"
или это:
object === Object(object)
Но похоже, что эти операции недешевы, может быть, есть и более эффективные? Это нормально, если он не универсален и не работает на всех двигателях, он нужен мне только для V8.