循环Object的方法能否循环是否可枚举属性,能否循环是否原型的

2019-06-04  本文已影响0人  keknei

我们先定义一个对象,这个对象有原型上的属性,有不可枚举属性,有可枚举属性

let obj={
  name:"andy",
  age:18
};
obj.__proto__.job="hehe";
Object.defineProperty(obj,"sex",{
  enumerable:false
});

for in可以循环出所有的可枚举属性,不管是不是原型上的

for(let name in obj){
  console.log(name);//name age job
}

Object.keys只能循环出自身的可枚举属性

let name=Object.keys(obj);
console.log(name);//["name", "age"]

getOwnPropertyNames返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组

let arr=Object.getOwnPropertyNames(obj);
console.log(Object.getOwnPropertyNames(obj));//["name", "age", "sex"]
上一篇下一篇

猜你喜欢

热点阅读