Reflect.defineProperty()

Reflect.defineProperty() 정적 메서드는 Object.defineProperty()와 같은 동작을 하지만 Boolean을 반환합니다.

구문

Reflect.defineProperty(target, propertyKey, attributes)

매개변수

target
속성을 정의할 대상 객체.
propertyKey
정의하거나 수정할 속성의 이름.
attributes
정의하거나 수정하는 속성을 기술하는 객체.

반환 값

속성이 성공적으로 정의됐는지 나타내는 Boolean.

예외

targetObject가 아니면 TypeError.

설명

Reflect.defineProperty 메서드는 객체에 속성을 정교하게 추가하거나 수정할 수 있습니다. 자세한 내용은 유사한 메서드인 Object.defineProperty를 참고하세요. Object.defineProperty는 성공 시 대상 객체를 반환하고 실패하면 TypeError를 던지지만, Reflect.defineProperty는 성공 여부를 나타내는 Boolean을 반환합니다.

예제

Reflect.defineProperty() 사용하기

var obj = {};
Reflect.defineProperty(obj, 'x', {value: 7}); // true
obj.x; // 7

속성 정의의 성공 여부 알아내기

Object.defineProperty는 성공 시 객체를 반환하고, 실패 시 TypeError를 던지므로 속성 정의 과정에 발생할 수 있는 오류를 try...catch 블록으로 잡아야 합니다. 반면 Reflect.defineProperty는 성공 여부를 나타내는 Boolean을 반환하므로, 간단하게 if...else 블록만 사용하면 됩니다.

if (Reflect.defineProperty(target, property, attributes)) {
  // 성공
} else {
  // 실패
}

명세

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Reflect.defineProperty' in that specification.
Standard Initial definition.
ECMAScript (ECMA-262)
The definition of 'Reflect.defineProperty' in that specification.
Living Standard  

브라우저 호환성

BCD tables only load in the browser

같이 보기