javascript,是不是有像 isArray 这样的 isObject 函数? [复制]

Posted

技术标签:

【中文标题】javascript,是不是有像 isArray 这样的 isObject 函数? [复制]【英文标题】:javascript, is there an isObject function like isArray? [duplicate]javascript,是否有像 isArray 这样的 isObject 函数? [复制] 【发布时间】:2012-10-14 06:27:25 【问题描述】:

可能重复:Check that value is object literal?

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

【问题讨论】:

嗯,看起来这个答案可能是我正在寻找的盟友,但似乎可以解决。如果那是最好的,那就接受吧:-D 试试这个isObject: function(arg) return Object.prototype.toString.call(arg).indexOf('Object') !== -1; Object.prototype.toString.call(variable) === '[object Object]' 【参考方案1】:

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

描述:检查一个对象是否是一个普通对象(创建 使用“”或“新对象”)。

【讨论】:

很好,但有一个警告:“注意:宿主对象(或浏览器宿主环境用来完成 ECMAScript 执行环境的对象)有许多不一致的地方,这些不一致之处很难稳健地检测交叉-平台。因此,在某些情况下,$.isPlainObject() 可能会在不同浏览器之间进行不一致的评估。" 原生版本是:(obj instanceof Object && !(obj instanceof Array)) 实际上只有好的答案...@StevenVachon:obj = new Number(123) 失败 Object.isPlainObject() 请与 Array.isArray() 一起使用! @JoshMc 这些是现代浏览器最近开始支持的相当新的方法。 3 年前,大多数浏览器对这个问题一无所知,所以复杂的 vanilla 和简短的 jQuery 解决方案是最佳实践。【参考方案2】:

您可以使用typeof 运算符。

if( (typeof A === "object" || typeof A === 'function') && (A !== null) )

    alert("A is object");

请注意,因为typeof new Number(1) === 'object'typeof Number(1) === 'number'; 应避免使用第一种语法。

【讨论】:

看起来有潜在的退路,因为null 可能会导致误报。 试试A = []。数组也是对象 :) @bhovhannes JSON 不是一个对象... @VisioN,是的,我刚刚引用了这个问题。我的意思是我们有空值、0 值和一些对象,我们可以使用答案中的代码检查对象(无论它是否是数组)。 function isObject(A) return A === null || (A && A.toString() === "[object Object]"); 以上比检查typeof A === "object" 更可靠,因为如果 A 是数组或 A=new Number(8),后者也将返回 true。【参考方案3】:

使用下面的

它会返回一个真或假

theObject instanceof Object

【讨论】:

-1 [] instanceof object === true @naomik 为什么投反对票?接受的答案也为数组返回 true,除此之外,这就是 OP 所要求的。此外,此方法是faster,而不是接受的方法,并且不涉及对 null 的额外检查;也使其更易于阅读。我希望我能投票十次。 @rvighne,我也否决了这个答案。基于这个问题,OP 似乎想要将对象与数组区分开来。使用这种方法你会得到误报。 @naomik 一个数组一个对象。 JSON 根元素可以是数组也可以是对象,试试JSON.parse("[1,2,3]")。 OP 说他们不想要 0 或 null。 -1 因为instanceof 对来自不同帧的对象失败。 perfectionkills.com/…

以上是关于javascript,是不是有像 isArray 这样的 isObject 函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery.isArray()

Array.isArray (Array) – JavaScript 中文开发手册 - Break易站

JavaScript 判断判断某个对象是Object还是一个Array

javascript isArray判断是否数组

是否有像 PHP 一样进行 Rijndael 256 位加密的 JavaScript 库?

clazz.isArray()