每天做个总结吧,坚持就是胜利!
/**
@date 2021-07-04
@description for...in与Object.keys()
*/
壹(序)
for...in与Object.keys()都可以用来遍历对象,获取到对象的除Symbol的可枚举属性名,区别在于for...in会获取到对象原型上的所有除Symbol可枚举属性,而Object.keys()只能获取到自身的。
贰(验证)
const obj = {
a: 1,
b: 2,
};
Object.defineProperty(obj, 'c', {
value: 3,
enumerable: false,
});
const symbol = Symbol('d');
obj[symbol] = 4;
obj.__proto__ = {
e: 5,
};
for (const key in obj) {
console.log(key); // 'a', 'b', 'e'
}
const keys = Object.keys(obj);
console.log(keys); // ['a', 'b']
叁(其他)
可以使用in操作符判断某个属性是否在是某个对象上或其原型链上,并且可以判断Symbol属性和非可枚举属性;
console.log(e in obj); // true
console.log(symbol in obj); // true