Есть ли способ эффективно проверить, является ли переменная объектом или массивом в 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.