Javascript:如何测试对象是一个对象(而不是数组或字符串)?

时间:2014-06-10 10:24:26

标签: javascript collections

我知道(一个实例的数组),但我如何测试一个对象?

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 个答案:

答案 0 :(得分:1)

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

ArrayFunction检查是必要的,因为JavaScript数组也是对象(假设您不希望函数为数组或函数参数返回true

示例输出:

isObject([])
> false

isObject({})
> true

isObject(1)
> false

isObject('something')
> false

isObject(isObject)
> false

答案 1 :(得分:0)

我觉得你的意思是这样的?如果我不理解这个问题,我很抱歉。

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