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
.
Интерактивный пример
const object1 = {}; if (Reflect.defineProperty(object1, "property1", { value: 42 })) { console.log("property1 created!"); // Expected output: "property1 created!" } else { console.log("problem creating property1"); } console.log(object1.property1); // Expected output: 42
Синтаксис
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® 2026 Language Specification # sec-reflect.defineproperty |