检测对象的属性是否为对象

Detecting if a Property of an Object is an Object

本文关键字:对象 是否 检测 属性      更新时间:2023-09-26

我将使用JSON来字符串化对象属性的值,以便通过Google Apps脚本将其存储为Google日历上的标记。该值实际上是双嵌套Object(请参见myObject中的extraAttributes)。

我有一个像下面这样构建的对象:

var myObject = {
  "location": "somwehere",
  "date": new Date(),
  "numSomething": 20,
  "extraAttributes": {"used": true, "interval": 60, "internals": {"timer": 10, "visible": false} }
}

我试着让它变得美观易读。。。无论如何:myObject实际上有20-40个属性,其中一些是嵌套的Objects。所以问题来了:

是否有一种方法可以通知对象中属性的值是否是对象本身(额外的嵌套级别是否会成为此检测的问题?)?这背后的原因是,我不知道JSON.stringifyJSON.parse会如何影响其他数据(我已经在Object类型的一个特定值上测试了它,它运行得很好),而且我也不知道如果存储的属性达到20-40,这两个函数会对我的脚本产生多大的性能影响。

我宁愿做一个检查,看看这个值是否是Object,并仅字符串化(这也会效率低下吗?)。如果这会在未来引发重大问题,请随时向我讲授对象和嵌套;)

除函数和undefined外,所有Javascript值都可以序列化为JSON。

要回答您的问题,请参阅typeof操作员。

检查某个东西是否是对象而不是使用typeof(在某些情况下可能会产生误导,例如typeof [] === 'object')的另一种方法是使用object构造函数:

var foo = { id: 1 };
var bar = 'string';
console.log(foo === Object(foo)) // true
console.log(bar === Object(bar)) // false