Object.getOwnPropertyDescriptor()
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.getOwnPropertyDescriptor()
메서드는 주어진 객체 자신의 속성(즉, 객체에 직접 제공하는 속성, 객체의 프로토타입 체인을 따라 존재하는 덕택에 제공하는 게 아닌)에 대한 속성 설명자(descriptor)를 반환합니다.
구문
Object.getOwnPropertyDescriptor(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 코드
명세서
Specification |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptor |
브라우저 호환성
BCD tables only load in the browser