自身可枚举属性
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成的数组。
这是合理的,因为大多数时候只需要关注对象自身的属性。
来看看一个对象拥有自身和继承属性的例子,Object.keys()只返回自己的属性键:
let simpleColors = {
colorA: ‘white’,
colorB: ‘black’
};
let natureColors = {
colorC: ‘green’,
colorD: ‘yellow’
};
Object.setPrototypeOf(natureColors, simpleColors);
Object.keys(natureColors); // => [‘colorC’, ‘colorD’]
natureColors[‘colorA’]; // => ‘white’
natureColors[‘colorB’]; // => ‘black’
复制代码
Object.setPrototypeOf() 方法设置一个指定的对象的原型 ( 即, 内部[[Prototype]]属性)到另一个对象或 null。
Object.keys(natureColors)返回natureColors对象的自身可枚举属性键:[‘colorC’,‘colorD’]。
natureColors包含从simpleColors原型对象继承的属性,但是Object.keys()函数会跳过它们。
Object.values() 和 Object.entries() 也都是返回一个给定对象自身可枚举属性的键值对