Reflect.defineProperty()

Статический метод Reflect.defineProperty() похож на Object.defineProperty(), но возвращает Boolean.

Синтаксис

Reflect.defineProperty(target, propertyKey, attributes)

Параметры

target
Объект, в котором определяется свойство.
propertyKey
Имя определяемого или изменяемого свойства.
attributes
Атрибуты для определяемого или изменяемого свойства.

Возвращаемое значение

Возвращается значение Boolean, указывающее было ли свойство успешно определено.

Исключения

Исключение TypeError, если target не является Object.

Описание

Метод 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 Latest Draft (ECMA-262)
Определение 'Reflect.defineProperty' в этой спецификации.
Черновик  

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
definePropertyChrome Полная поддержка 49Edge Полная поддержка 12Firefox Полная поддержка 42IE Нет поддержки НетOpera Полная поддержка 36Safari Полная поддержка 10WebView Android Полная поддержка 49Chrome Android Полная поддержка 49Firefox Android Полная поддержка 42Opera Android Полная поддержка 36Safari iOS Полная поддержка 10Samsung Internet Android Полная поддержка 5.0nodejs Полная поддержка 6.0.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки

Смотрите также