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