Reflect.defineProperty()
Reflect.defineProperty() 정적 메서드는 Object.defineProperty()와 같은 동작을 하지만 Boolean을 반환합니다.
시도해보기
구문
js
Reflect.defineProperty(target, propertyKey, attributes)
매개변수
target-
속성을 정의할 대상 객체.
propertyKey-
정의하거나 수정할 속성의 이름.
attributes-
정의하거나 수정하는 속성을 기술하는 객체.
반환 값
속성이 성공적으로 정의됐는지 나타내는 Boolean.
예외
설명
Reflect.defineProperty 메서드는 객체에 속성을 정교하게 추가하거나 수정할 수 있습니다. 자세한 내용은 유사한 메서드인 Object.defineProperty를 참고하세요. Object.defineProperty는 성공 시 대상 객체를 반환하고 실패하면 TypeError를 던지지만, Reflect.defineProperty는 성공 여부를 나타내는 Boolean을 반환합니다.
예제
Reflect.defineProperty() 사용하기
js
var obj = {};
Reflect.defineProperty(obj, 'x', {value: 7}); // true
obj.x; // 7
속성 정의의 성공 여부 알아내기
Object.defineProperty는 성공 시 객체를 반환하고, 실패 시 TypeError를 던지므로 속성 정의 과정에 발생할 수 있는 오류를 try...catch 블록으로 잡아야 합니다. 반면 Reflect.defineProperty는 성공 여부를 나타내는 Boolean을 반환하므로, 간단하게 if...else 블록만 사용하면 됩니다.
js
if (Reflect.defineProperty(target, property, attributes)) {
// 성공
} else {
// 실패
}
명세
| Specification |
|---|
| ECMAScript Language Specification # sec-reflect.defineproperty |
브라우저 호환성
BCD tables only load in the browser