Reflect.defineProperty()
Статический метод Reflect
.defineProperty()
похож на Object.defineProperty()
, но возвращает Boolean
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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 | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Reflect.defineProperty' в этой спецификации. |
Стандарт | Изначальное определение. |
ECMAScript (ECMA-262) Определение 'Reflect.defineProperty' в этой спецификации. |
Живой стандарт |
Совместимость с браузерами
BCD tables only load in the browser