for ... in 循环

警告
… in 用于迭代对象键,而不是数组索引。通常不鼓励使用它来遍历数组 。它还包括原型中的属性,因此可能需要使用 hasOwnProperty 检查密钥是否在对象内。如果对象中的任何属性由 defineProperty/defineProperties 方法定义并设置参数 enumerable: false,则这些属性将无法访问。

var object = {"a":"foo", "b":"bar", "c":"baz"};
// `a` is inaccessible
Object.defineProperty(object , 'a', {
        enumerable: false,
});
for (var key in object) {
    if (object.hasOwnProperty(key)) {
      console.log('object.' + key + ', ' + object[key]);
    }
}

预期输出:

object.b,bar
object.c,baz