javascript,是否有像isArray这样的isObject函数?

chr*_*ris 68 javascript arrays jquery object

可能重复:
检查该值是否为对象文字?

我正在使用输出,可以是null,0或json对象.有了这个,我需要想出一种方法来确定输出是否确实是一个真实的对象.但我找不到任何能给我一个明确答案的答案,如果javascript功能中有类似的东西.如果没有,否则我可以检测到这是否是一个对象?

bho*_*nes 83

您可以使用typeof运算符.

if( (typeof A === "object" || typeof A === 'function') && (A !== null) )
{
    alert("A is object");
}
Run Code Online (Sandbox Code Playgroud)

需要注意的是,因为typeof new Number(1) === 'object'typeof Number(1) === 'number';第一个语法应该避免.

  • 试试`A = []`.数组也是对象:) (32认同)
  • 看起来这有一个潜在的缺点,因为“null”可能会导致误报。 (5认同)
  • @bhovhannes JSON 虽然不是对象... (3认同)

小智 37

使用以下内容

它会返回真或假

theObject instanceof Object
Run Code Online (Sandbox Code Playgroud)

  • -1` [] instanceof object === true` (28认同)
  • @naomik为什么选择downvote?对于数组,接受的答案也会返回true,除此之外是OP所要求的.此外,这种方法[更快](http://jsperf.com/is-it-an-object)比接受的方法更快,并且不涉及对null的额外检查; 使它更容易阅读.我希望我可以投票十次. (23认同)
  • @naomik数组*是一个对象.JSON根元素可以是数组也可以是对象,请尝试`JSON.parse("[1,2,3]")`.OP表示他们不想要0或null. (9认同)
  • @rvighne,我也回答了那个问题.基于这个问题,似乎OP希望区分对象和数组.你会用这种方法得到误报. (2认同)
  • -1 因为对于来自不同帧的对象,`instanceof` 失败。http://perfectkills.com/instanceof-thinked-harmful-or-how-to-write-a-robust-isarray/ (2认同)

Vis*_*ioN 10

在jQuery中有$.isPlainObject()方法:

描述:检查对象是否是普通对象(使用"{}"或"new Object"创建).

  • 原生版本将是:`(obj instanceof Object &&!(obj instanceof Array))` (2认同)
  • 实际上只有很好的答案...... @StevenVachon:失败了`obj = new Number(123)` (2认同)