Javascript: как тестировать объект - это объект (а не массив или строка)?

Я знаю (экземпляр массива), но как бы проверить объект?

var c = {};

if ( c instanceof XXXX) {
 // should get thru
}

var s = "abscdef";

if ( s instanceof XXXX) {
 // should not get thru
}

var a = [];

if ( a instanceof XXXX) {
 // should not get thru
}
2 ответа

function isObject(c) {
 return c instanceof Object 
 && !(c instanceof Array) 
 && !(c instanceof Function)
}

Array и Function необходима, поскольку массивы JavaScript также являются объектами (если вы не хотите, чтобы функция возвращала значение true для аргументов Array или Function)

Пример вывода:

isObject([])
> false

isObject({})
> true

isObject(1)
> false

isObject('something')
> false

isObject(isObject)
> false


Я думаю, что вы имеете в виду что-то вроде этого? Извините, если я не понимаю этот вопрос.

function MyOwnType(name){
 this.name = name
}
var ********** = new MyOwnType("StackOverflow");
console.log(********** instanceof(MyOwnType)) //this evaluates to true
console.log(********** instanceof(Array)) //this evaluates to false

licensed under cc by-sa 3.0 with attribution.