Object.keys()
메서드는 개체 고유의 열거형(enumerable) 속성들을 for ...in
루프에 의해 제공되는 순서와 동일한 순서로 리턴한다.
for ...in
루프는 프로토타입 체인을 통하여 프로퍼티를 나열한다는 점에서 차이점이 있다.
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']
// array like object with random key ordering
var anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // ['2', '7', '100']
// getFoo is property which isn't enumerable
var myObj = Object.create({}, {
getFoo: {
value: function () { return this.foo; }
}
});
myObj.foo = 1;
console.log(Object.keys(myObj)); // console: ['foo']
여기서 객체로 불러왔을 때의 부분이 이해가 안감 ㅠㅠㅠㅠ