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 函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Array.isArray (Array) – JavaScript 中文开发手册 - Break易站
JavaScript 判断判断某个对象是Object还是一个Array