Reflect.defineProperty()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Reflect.defineProperty()
정적 메서드는 Object.defineProperty()
와 같은 동작을 하지만 Boolean
을 반환합니다.
시도해보기
구문
Reflect.defineProperty(target, propertyKey, attributes);
매개변수
target
-
속성을 정의할 대상 객체.
propertyKey
-
정의하거나 수정할 속성의 이름.
attributes
-
정의하거나 수정하는 속성을 기술하는 객체.
반환 값
속성이 성공적으로 정의됐는지 나타내는 Boolean
.
예외
설명
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 |
---|
ECMAScript Language Specification # sec-reflect.defineproperty |
브라우저 호환성
BCD tables only load in the browser