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 July 2015.
Object.keys()
정적 메서드는 주어진 객체 자체의 열거 가능한 문자열 키를 가진 속성들의 이름을 배열로 반환합니다.
시도해보기
구문
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 Language Specification # sec-object.keys |
브라우저 호환성
BCD tables only load in the browser
같이 보기
Object.keys
의 폴리필 코드는 아래에서 확인할 수 있습니다.core-js
- Enumerability and ownership of properties
Object.entries()
Object.values()
Object.prototype.propertyIsEnumerable()
Object.create()
Object.getOwnPropertyNames()
Map.prototype.keys()