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

时间:2013-07-12 15:42:03

标签: javascript object properties google-apps-script

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

我有一个像下面那样构建的Object:

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并仅对其进行字符串化(这也是效率低下的吗?)。如果这将导致将来出现重大问题,请随时向我讲授对象和嵌套;)

2 个答案:

答案 0 :(得分:1)

所有Javascript值,除了函数和undefinedcan be serialized as JSON

要回答您的问题,请参阅typeof运算符。

答案 1 :(得分:1)

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

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