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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章