对象是空的但对象属性不是?

时间:2013-06-05 19:45:45

标签: javascript titanium

在什么情况下,对象是空的,但该对象的属性不是?

代码:

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等。

1 个答案:

答案 0 :(得分:3)

如果data不是可枚举属性,则不会进行字符串化。这可能就是这里发生的事情。

请参阅Object.defineProperty以深入了解不可枚举的属性及其创建。

请注意,您可以更有效地使用控制台:

console.log(typeof(widget), widget);
console.dir(widget);

这不仅仅是字符串。

顺便说一下,我今天刚编写了一个字符串,它不考虑可枚举的属性:JSON.prune