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