This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Object.keys()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015년 7월.
Object.keys() 정적 메서드는 주어진 객체 자체의 열거 가능한 문자열 키를 가진 속성들의 이름을 배열로 반환합니다.
In this article
시도해 보기
const object1 = { a: "somestring", b: 42, c: false,};console.log(Object.keys(object1));// Expected output: Array ["a", "b", "c"]구문
Object.keys(obj)매개변수
obj객체.
반환 값
주어진 객체 자체의 열거 가능한 문자열로 된 속성 키들을 나타내는 문자열 배열.
설명
Object.keys()는object 에서 직접 찾은 열거 가능한 문자열 키 속성 이름에 해당하는 문자열을 요소로 하는배열을 반환합니다. 이는for...in 루프가 프로토타입 체인의 속성도 열거한다는 점을 제외하면for...in 루프를 사용하여 반복하는 것과 동일합니다.Object.keys()가 반환하는 배열의 순서는for...in루프에서 제공하는 것과 동일합니다.
속성 값이 필요한 경우Object.values()를 대신 사용하시기 바랍니다.속성 키와 값이 모두 필요한 경우Object.entries()를 대신 사용하시기 바랍니다.
예제
>Object.keys() 사용하기
// 단순 배열const arr = ["a", "b", "c"];console.log(Object.keys(arr)); // ['0', '1', '2']// 유사 배열 객체const obj = { 0: "a", 1: "b", 2: "c" };console.log(Object.keys(obj)); // ['0', '1', '2']// 키와 순서가 무작위인 유사 배열 객체const anObj = { 100: "a", 2: "b", 7: "c" };console.log(Object.keys(anObj)); // ['2', '7', '100']// getFoo 는 열거할 수 없는 속성입니다.const myObj = Object.create( {}, { getFoo: { value() { return this.foo; }, }, },);myObj.foo = 1;console.log(Object.keys(myObj)); // ['foo']만약 열거할 수 없는 속성도 포함한 문자열이 키인 객체 자체 속성을 원한다면,Object.getOwnPropertyNames()을 참고하시기 바랍니다.
원시형에서 Object.keys() 사용하기
객체가 아닌 인수는강제로 객체로 변환됩니다.undefined와null은 객체로 강제 변환될 수 없으며 즉시TypeError를 발생시킵니다.문자열만 자체 열거 가능한 속성을 가질 수 있으며, 다른 모든 원시형은 빈 배열을 반환합니다.
// 문자열은 열거가능한 자체 속성처럼 인덱스를 가지고 있습니다.console.log(Object.keys("foo")); // ['0', '1', '2']// undefined와 null을 제외한 다른 원시형은 자체 속성이 없습니다.console.log(Object.keys(100)); // []참고 :ES5에서는 비객체를Object.keys()에 전달하면TypeError가 발생합니다.
명세서
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.keys> |