for...in循環(huán)是 遍歷對象的每一個可枚舉屬性,包括原型鏈上面的可枚舉屬性
Object.keys()只是遍歷自身的可枚舉屬性,不可以遍歷原型鏈上的可枚舉屬性. 這是for...in和Object.keys()的主要區(qū)別
Object.getOwnPropertyNames()則是遍歷自身所有屬性(不論是否是可枚舉的),不包括原型鏈上面的.
Object.entries()方法返回一個給定對象自身可枚舉屬性的鍵值對數(shù)組赶袄,其排列與使用?for...in?循環(huán)遍歷該對象時返回的順序一致(區(qū)別在于 for-in 循環(huán)也枚舉原型鏈中的屬性)画畅。
const a= { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(a))? ?//?[ ["2", "b"], ["7", "c"], ["100", "a"] ]