获取JS对象属性(自身/原型/可枚举/不可枚举)

自身可枚举属性

方法1:ES6

  1. Object.keys(obj) //只能返回自身可枚举属性

方法2

  1. // for...in是默认枚举自身及原型中继承来的所有可枚举属性
  2. for (key in person) {
  3. // 只有是自身属性时,打印
  4. if (Object.hasOwnProperty(key)) {
  5. console.log(key); // "name"
  6. }
  7. }

自身+原型可枚举属性

  1. for (property in object) { ...} //for...in是默认枚举自身及原型中继承来的所有可枚举属性

自身所有属性

  1. Object.getOwnPropertyNames(obj); //自身可枚举属性以及不可枚举属性

自身+原型所有属性

  1. function getAllPropertyNames( obj ) {
  2. var props = [];
  3. do {
  4. //自身所有属性
  5. props= props.concat(Object.getOwnPropertyNames( obj ));
  6. } while ( obj = Object.getPrototypeOf( obj ) );
  7. return props;
  8. }

涉及API

Object.defineProperty()Object.hasOwnProperty()Object.getOwnPropertyNames(obj)
Object.getPrototypeOf()