Объявим пространство имен NS (регистрозависим)
var NS = {};
Далее объявим в нем конструктор Test и создадим на его основе экземпляр t
NS.Test = function() {
this.name = 'Test';
};
NS.t = new NS.Test();
Далее создадим объект o, используя стандартный объект Object
NS.o = {};
Для определения принадлежности того или иного экземпляра своему "классу" (в js понятие класса условно), можно воспользоваться следующими стандартными способами
NS.t.constructor == NS.Test // true
NS.t instanceof NS.Test // true
NS.o.constructor == Object // true
NS.o instanceof Object // true
Если попытаться сопоставить объект через явно объявленный конструктор с объектом Object,
то можно получить следующие результаты
NS.t.constructor == Object // false
NS.t instanceof Object // true
Первое сравнение вернуло false, это и понятно, так как этот конструктор явно объявлен и ссылается на функцию Test(), второе сравнение истинно потому, что сам конструктор является объектом, что уж там, в javascripte практически все представлено объектом, такова его реализация. В подтверждение сказанного приведу следующее сравнение
NS.Test.constructor == Object // false
NS.Test instanceof Object // true
В виде дополнения, приведу список встроенных в javascript объектов
// Массив пронумерованных элементов, также может служить стеком или очередью
Array
// Объект для булевых значений
Boolean
// Функции для работы с датой и временем
Date
// объект для представления ошибок
Error
// Ошибка при выполнении функции eval
EvalError
// Каждая функция в яваскрипт является объектом класса Function
Function
// Встроенный объект, предоставляющий константы и методы для математических вычислений
Math
// Объект для работы с числами
Number
// Базовый объект javascript
Object
// Ошибка, когда число не лежит в нужном диапазоне
RangeError
// Ошибку при ссылке на несуществующую переменную
ReferenceError
// Позволяет работать с регулярными выражениями.
RegExp
// Базовый объект для строк. Позволяет управлять текстовыми строками, форматировать их и выполнять поиск строк
String
// Ошибка при интерпретации синтаксически неверного кода
SyntaxError
// Ошибка в типе значения
TypeError
// Ошибка при некорректном URI
URIError
Небольшой пример сверки типа объекта
var stack = [];
if (stack instanceof Array) {
stack.push(1);
stack.push(2);
stack.push(3);
}