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