JavaScript에서는 세 가지 방법을 사용하여 객체의 속성을 탐색할 수 있습니다.
1.for/in. for/in 문을 사용하여 객체의 자체 속성(Own Property)을 탐색할 수 있으며, 프로토타입 객체에서 상속받은 속성만 탐색할 수 있습니다.
2.Object.keys(). 객체를 Object.keys()에 매개변수로 전달할 수 있으며 Object.keys() 문은 모든 속성 이름 문자열로 구성된 배열을 반환합니다. Object.keys() 문은 객체 자체(고유 속성)와 열거 가능한 속성만 반환합니다. 이 명령문은 ECMAScript 5 표준에서만 유효합니다.
3.Object.getOwnPropertyNames(). Object.getOwnPropertyNames()에 매개변수로 객체를 전달할 수 있습니다. Object.keys()와 마찬가지로 이 명령문은 모든 속성 이름 문자열로 구성된 배열을 반환합니다. Object.keys()와 달리 Object.getOwnPropertyNames() 문은 열거 가능 여부에 관계없이 모든 개체 자체의 속성(자체 속성)을 반환합니다. 이 명령문은 ECMAScript 5 표준에서만 유효합니다.
위 정보를 바탕으로 정리하면 다음과 같습니다.
실험:
(p in a){
console.log(p);
}//zxy
console.log(Object.keys(a));//["z"]
console.log(Object.getOwnPropertyNames(a));//["z"]