Note
EcmaScript6
Reflect
исследование и обаботка свойств объектов
apply
(function, this, args)Вызов функции с заданным контекстом.
Аналогичен методу apply Function
function s(a, b){
return this.value + a + b;
}
Reflect.apply(s, {value: 100}, [10, 30]);
// 140
construct
(constructor, args, prototype)Вызов функции в качестве конструктора
Аналогичен оператору new, отличается:
передача в свойстве prototype
function const1(a, b){};
function const2(){};
var newObj = Reflect.construct(const1, [1, 2], const2);
defineProperty
(object, property, descriptor)Опеределяет новое или изменяет существующее свойство объекта. Возвращает логическое значение, была ли операция успешной.
Аналогичен методу defineProperty Object
, отличается:
возвращает логическое значение, а не модифицированный объект
// создание свойств данных
var obj = {};
Reflect.defineProperty(obj, 'name', {
// значение свойства
value: 'Ilnurgi',
// значение может быть изменено
writable: true,
// атриубты свойства могут быть изменены и свойство может быть удалено
configurable: true,
// свойство может быть использовано в цикле for ... in
enumerable: true
})
// создание свойства со средствами доступа
var obj = {
__name__: 'ilnurgi'
}
Reflect.defineProperty(obj, 'name', {
get: function(){
return this.__name__;
},
set: function(value){
this.__name__ = value;
},
// свойства дескриптора могут быть изменены и свойство может быть удалено
configurable: true,
// свойство может быть использовано в цикле for ... in
enumerable: true
})
deleteProperty
(object, property)Удаление свойства объекта.
Аналогичен delete
Reflect.deleteProperty(obj, 'name');
enumerate
(object)Возвращает итератор, перечисляемые свойства объекта.
Аналогичен циклу for … in
var iter = Reflect.enumerate(obj);
iter.next().value;
get
(object, property, this)Возвращает значение свойства объекта
getOwnPropertyDescriptor
(object, property)Возвращает дескриптор свойства объекта
Аналогичен getOwnPropertyDescriptor Object
var descriptor = Reflect.getOwnPropertyDescriptor(obj, 'name');
getPrototypeOf
(object)Извлекает прототип объекта
Аналогичен getPrototypeOf Object
var obj2 = Reflect.getPrototypeOf(obj1);
has
(object, property)Используется для проверки существования свойства в объекте.
Reflect.has(obj, 'name');
isExtensible
(object)Проверяет возможность расширения объекта, возможность добавления новых свойств в объект
Аналогичен isExtensible Object
Reflect.isExtensible(obj);
ownKeys
(object)Возвращает массив ключей свойств объекта, игнорируя наследуемые свойства.
Reflect.ownKeys(obj);
preventExtensions
(object)Позволяет отметить объект как нерасширяемый, возвращает логическое значение, успешность операции.
Аналогичен preventExtensions Object
Reflect.preventExtensions(obj);
set
(object, property, value, this)Задает значение свойства объекта
setPrototypeOf
(object, prototype)Установка значения прототипа
Reflect.setPrototypeOf(obj, {
name: 'ilnurgi'
})