JavaScript 中的对象 属性 是否有可能不可打印但可迭代?

Is it possible for a object property in JavaScript to be non-printable but iterable?

我有一个对象,它在打印时 (JSON.stringify(...)) 不显示 属性 ,当我遍历时显示使用 for 循环的对象

(for(var prop in object){...})

这可能吗?或者有人以前遇到过这种神秘行为吗?

当与 属性 关联的值不是 有效 JSON 数据类型 时,会发生这种情况。 有效的数据类型是数字、布尔值、字符串、数组和对象。

所有其他类型的变量都是非原始变量。例如,回调、class 或 DOM 元素的实例。

因此,如果您执行 json.stringify({"prop1" : 5, "prop2" : function(){}}),您将得到 prop1 而不是 prop2(而当您使用 for 循环进行迭代时,两者都会出现)。