IT源码网

怎样获取对象的所有属性

lxf 2021年03月09日 编程语言 435 0

使用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__)为止;

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

怎样获取对象本身的属性名(不包含继承来的属性)