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

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

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"]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。