在什么情况下,对象是空的,但该对象的属性不是?
代码:
console.log('type: '+typeof(widget));
console.log('obj: '+JSON.stringify(widget));
console.log('data: '+JSON.stringify(widget.data));
输出:
[INFO] : type: object
[INFO] : obj: {}
[INFO] : data: {"index":2}
此外,for (var prop in widget)
无法执行,并且尝试调用widget.hasOwnProperty('data')
会引发错误。
编辑添加:我应该指定这是在Titanium中,而不是直接JS,因此console
调用是Titanium调用而不是Firebug等。
答案 0 :(得分:3)
如果data
不是可枚举属性,则不会进行字符串化。这可能就是这里发生的事情。
请参阅Object.defineProperty以深入了解不可枚举的属性及其创建。
请注意,您可以更有效地使用控制台:
console.log(typeof(widget), widget);
console.dir(widget);
这不仅仅是字符串。
顺便说一下,我今天刚编写了一个字符串,它不考虑可枚举的属性:JSON.prune。