怎样获取对象的所有属性

使用Object.keys()可以获取对象本身所有的可遍历属性;

使用Object.getOwnPropertyNames()可以获取对象本身所有属性, 不管是否可遍历;

使用for...in...循环可以获取对象所有可遍历属性, 包括本身的属性和继承的属性;

使用下面的函数可以获取对象的所有属性, 不管是本身还是继承, 不管是可遍历还是不可遍历: 

function inheritedPropertyNames(obj) {
  var props = {};
  while(obj) {
    Object.getOwnPropertyNames(obj).forEach(function(p) {
      props[p] = true;
    });
    obj = Object.getPrototypeOf(obj);
  }
  return Object.getOwnPropertyNames(props);
}

 

这个函数的执行逻辑是: 遍历所有当前对象的属性, 完成后把原型赋值给当前对象, 继续下一轮循环, 直到: Object.getPrototypeOf(Object.prototype.__proto__)为止;

posted on 2019-10-16 17:21  aisowe  阅读(2886)  评论(0编辑  收藏  举报

导航