--- title: Reflect.defineProperty() slug: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty tags: - ECMAScript 2015 - Method - Reflect translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty ---
Статический метод Reflect.defineProperty() похож на {{jsxref("Object.defineProperty()")}}, но возвращает {{jsxref("Boolean")}}.
Reflect.defineProperty(target, propertyKey, attributes)
targetpropertyKeyattributesВозвращается значение {{jsxref("Boolean")}}, указывающее было ли свойство успешно определено.
Исключение {{jsxref("TypeError")}}, если target не является {{jsxref("Object")}}.
Метод Reflect.defineProperty позволяет точно дополнить или изменить свойство объекта. Для более подробной информации смотрите на аналогичный метод - {{jsxref("Object.defineProperty")}}. Object.defineProperty возвращает объект или выбрасывает исключение {{jsxref("TypeError")}}, если свойство не было успешно определено. Reflect.defineProperty, в любом случае, просто возвращает {{jsxref("Boolean")}}, указывающее было ли свойство успешно определено.
Reflect.defineProperty()var obj = {};
Reflect.defineProperty(obj, 'x', {value: 7}); // true
obj.x; // 7
При использовании {{jsxref("Object.defineProperty")}}, который возвращал объект в случае успеха, либо выбрасывал исключение {{jsxref("TypeError")}}, вы должны были использовать конструкцию try...catch для того, чтобы поймать ошибку, которая случилась при определении свойства. Потому что Reflect.defineProperty возвращает {{jsxref("Boolean")}} в любом случае, вы можете использовать конструкцию if...else:
if (Reflect.defineProperty(target, property, attributes)) {
// успех
} else {
// неудача
}
{{Compat}}