js 中遍历对象的方法

2016-12-22  本文已影响0人  wakeGIS

包含原型链上的属性

var o = {name:"www",age:1};
o.__proto__.parent = "parent";
for(var item in o){
    console.log(o[item]);
}
// www、1、parent

不包含原型链上的属性

var o = {name:"www",age:1};
o.__proto__.parent = "parent";
for(var item in o){
    if (o.hasOwnProperty(item)) {
        console.log(o[item]);
    }   
}
// www、1
function* objectEntries(obj) {
      let propKeys = Reflect.ownKeys(obj);
      for (let propKey of propKeys) {
          yield [propKey, obj[propKey]];
      }
} 
let jane = { first: 'Jane', last: 'Doe' };
for (let [key, value] of objectEntries(jane)) {
console.log(`${key}: ${value}`);
} 
// first: Jane// last: Doe 
  1. 将Generator函数加到对象的 Symbol.iterator 属性上面。
function* objectEntries() {
    let propKeys = Object.keys(this);
    for (let propKey of propKeys) {
        yield [propKey, this[propKey]];
    }
} 
let jane = { first: 'Jane', last: 'Doe' };
jane[Symbol.iterator] = objectEntries;
 for (let [key, value] of jane) {
        console.log(`${key}: ${value}`);
} 
// first: Jane// last: Doe 
var o = {name:'wuerchang',age:1};
o.__proto__.parent = "parent";
Object.keys(o).forEach(k => console.log(o[k]));
// wuerchang、1
上一篇 下一篇

猜你喜欢

热点阅读