Object.getOwnPropertyDescriptor() 메서드는 주어진 객체 자신의 속성(즉, 객체에 직접 제공하는 속성, 객체의 프로토타입 체인을 따라 존재하는 덕택에 제공하는 게 아닌)에 대한 속성 설명자(descriptor)를 반환합니다.

구문

Object.getOwnPropertyDescriptor(obj, prop)

매개변수

obj
속성을 찾을 대상 객체.
prop
설명이 검색될 속성명.

반환값

객체에 존재하는 경우 주어진 속성의 속성 설명자, 없으면 undefined.

설명

이 메서드는 정확한 속성 설명의 검사를 허용합니다. JavaScript에서 속성은 문자열 값인 이름과 속성 설명자로 구성됩니다. 속성 설명자 유형과 attribute에 관한 자세한 정보는 Object.defineProperty()에서 찾을 수 있습니다.

속성 설명자는 다음 attribute 중 일부의 기록입니다:

value
속성과 관련된 값 (데이터 설명자만).
writable
속성과 관련된 값이 변경될 수 있는 경우에만 true (데이터 설명자만).
get
속성에 대해 getter로서 제공하는 함수 또는 getter가 없는 경우 undefined (접근자 설명자만).
set
속성에 대해 setter로서 제공하는 함수 또는 setter가 없는 경우 undefined (접근자 설명자만).
configurable
이 속성 설명자의 유형이 바뀔 수 있는 경우에만 그리고 속성이 해당 객체에서 삭제될 수 있는 경우 true.
enumerable
이 속성이 해당 객체의 속성 열거 중에 나타나는 경우에만 true.

var o, d;

o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, 'foo');
// d는 { configurable: true, enumerable: true, get: /* getter 함수 */, set: undefined }

o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, 'bar');
// d는 { configurable: true, enumerable: true, value: 42, writable: true }

o = {};
Object.defineProperty(o, 'baz', { value: 8675309, writable: false, enumerable: false });
d = Object.getOwnPropertyDescriptor(o, 'baz');
// d는 { value: 8675309, writable: false, enumerable: false, configurable: false }

주의

ES5에서, 이 메서드의 첫 번째 인수가 비객체(원시형)인 경우, 그러면 TypeError가 발생합니다. ES6에서, 비객체 첫 번째 인수는 먼저 객체로 강제됩니다.

Object.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo"는 객체가 아닙니다  // ES5 코드

Object.getOwnPropertyDescriptor("foo", 0);
// {configurable:false, enumerable:true, value:"f", writable:false}  // ES6 코드

스펙

스펙 상태 설명
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Standard 초기 정의. JavaScript 1.8.5에서 구현됨.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Draft  

브라우저 호환성

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Basic supportChrome Full support 5Edge Full support YesFirefox Full support 4IE Full support 8Opera Full support 12Safari Full support 5WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

 

참조

문서 태그 및 공헌자

이 페이지의 공헌자: fscholz, Netaras
최종 변경자: fscholz,