JavaScript中如何判断一个值是不是是Object Literal? [复制]

Posted

技术标签:

【中文标题】JavaScript中如何判断一个值是不是是Object Literal? [复制]【英文标题】:How to judge whether a value is Object Literal in JavaScript? [duplicate]JavaScript中如何判断一个值是否是Object Literal? [复制] 【发布时间】:2018-06-10 11:19:42 【问题描述】:

在我有限的对象类型判断经验中,不知道在javascript中如何判断一个值是否是Object Literal?我在网上搜索了很长时间。但是没有用。请帮助或尝试给出一些想法如何实现这一点。提前谢谢!

解决办法是: 众所周知,我们可以使用'typeof'或'instanceof'来判断值的类型。 比如判断一个Array,我们可以使用:

var array=[0,1,2,3,4];
if(Object.prototype.toString.call(array)==='[object Array]')
    alert('This is an Array!');

但现在我想检查一个值是否是这样的 Object Literal:

var obj=
    a:2
;

如何判断? 我的方法是:

if(obj["__proto__"]["constructor"]===Object)
    alert("This is Object Literal");

恐怕这种方式是错误的。

【问题讨论】:

对象字面量是一种语法结构。它在运行时不存在;在运行时,它只是一个对象,无论它是否被创建为文字。 此外,您使用Array.isArray(arr)检查数组 看看various ways to detect plain objects。基本上只使用Object.getPrototypeOf(obj) == Object.prototype。不要使用已弃用的__proto__ getter。 好的。谢谢!我试试。 【参考方案1】:

您可以通过将constructor 属性与Object 匹配来进行检查,如下所示:

var obj=
    a:2
;
console.log(obj.constructor == Object); // true

var arr = [1,2,3];
console.log(arr.constructor == Object); // false

【讨论】:

以上是关于JavaScript中如何判断一个值是不是是Object Literal? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何判断javascript中的变量是不是为数组?

jquery和js如何判断一个对象是不是存在

在javascript中如何判断一个变量为空或者undefine

如何在 JavaScript 中判断一个对象是否为空?

js中如何判断一个属性是不是属于某个对象

用Js判断输入的时间是不是有效