手记

Object获取对象属性的方法

let triangle={
a:1,
b:2,
c:3
}
 

function coloTriangle(){
this.color='red';
}
 

coloTriangle.prototype=triangle;
let color=new coloTriangle();
Object.defineProperty(color,'auto',{
value:'auto'
})
let symbolProp=Symbol('symbol');
color[symbolProp]='symbol'

*Reflect.ownKeys:Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols)

  • 没有来自继承的,都是own
  • 不管枚举不枚举都能遍历
  • 还可以拿到symbol类型属性
    */
    Reflect.ownKeys(color) //[“color”,“auto”,Symbol(symbol)]

/**

  • Object.getOwnPropertyNames
  • 没有来自继承,都是own
  • 不管枚举不枚举都能遍历
  • 拿不到symbol类型属性
    */
    Object.getOwnPropertyNames(color);//[“color”,“auto”]

/**

  • Object.getOwnPropertySymbols
  • 只能own
  • 也不管枚举不枚举
  • 只能拿到Symbol类型属性
    */

Object.getOwnPropertySymbols(color);//[Symbol(symbol)]

/**

  • Object.keys就有点矫情了
  • 只能是own
  • and 要枚举才行
  • 拿不到Symbol类型属性

*/
Object.keys(color);//[“color”]

/**

  • for in 就是也是取其一把
  • 不需要own,可以来自继承属性
  • 但是一定会要枚举
  • 拿不到Symbol类型属性
    */
    for(let i in color){
    console.log(i);//color a b c
    }
1人推荐
随时随地看视频
慕课网APP