for in 一般用於對象的遍歷:
let obj = { a:1, b:2, } for(let key in obj){ console.log(key) } // a // b
Object.keys()
方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for...in
循環遍歷該對象時返回的順序一致 。
let obj = { a:1, b:2, } console.log(Object.keys(obj)) // ["a", "b"]
兩者之間最主要的區別就是Object.keys( )不會走原型鏈,而for in 會走原型鏈;
Object.prototype.test = ‘test';
var obj= {
a:1,
b:2,
}
//Object.keys不會輸出原型鏈中的數據;
console.log(Object.keys(obj))
// ["a", "b"]
for(var key in obj){
console.log(key)
}
// a
// b
// test //for in 會把原型鏈中test 輸出