可枚举属性和不可枚举属性(for...in循环和Objec.keys()和Object.getOwnPropertyNames())


for...in循环是 遍历对象的每一个可枚举属性,包括原型链上面的可枚举属性
Object.keys()只是遍历自身的可枚举属性,不可以遍历原型链上的可枚举属性. 这是for...in和Object.keys()的主要区别
Object.getOwnPropertyNames()则是遍历自身所有属性(不论是否是可枚举的),不包括原型链上面的.

Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。

const a= { 100: 'a', 2: 'b', 7: 'c' };

console.log(Object.entries(a))   // [ ["2", "b"], ["7", "c"], ["100", "a"] ]

你可能感兴趣的:(可枚举属性和不可枚举属性(for...in循环和Objec.keys()和Object.getOwnPropertyNames()))