Comparaison entre Reflect et les méthodes d'Object
L'objet Reflect
, introduit avec ES2015, est un objet natif fournissant des méthodes pour s'interfacer avec les objets JavaScript. Certaines fonctions statiques de Reflect
ont une correspondance avec les méthodes fournies par Object
et disponibles avant ES2015. Bien que ces méthodes aient un comportement similaire, il y a souvent de subtiles différences entre elles.
Dans ce tableau, nous énumérons les différences entre les méthodes disponibles avec Object
et Reflect
. Si une méthode n'existe pas dans le cas indiqué, elle sera notée N/A.
Nom de la méthode | Object |
Reflect |
---|---|---|
defineProperty() |
Object.defineProperty() renvoie l'objet qui a
été passé à la fonction. Déclenche une exception
TypeError si la propriété n'a pu être définie sur l'objet.
|
Reflect.defineProperty() renvoie
true si la propriété a été définie sur l'objet et
false sinon.
|
defineProperties() |
Object.defineProperties() renvoie les objets
passés à la fonction. Déclenche une exception TypeError si
une des propriétés n'a pu être définie.
|
N/A |
set() |
N/A |
Reflect.set() renvoie true si la
propriété a été définie sur l'objet et false sinon.
Déclenche une exception TypeError si la cible n'était pas
un Object .
|
get() |
N/A |
Reflect.get() renvoie la valeur de la propriété.
Déclenche une exception TypeError si la cible n'était pas
un Object .
|
deleteProperty() |
N/A |
Reflect.deleteProperty() renvoie
true si la propriété a été supprimée de l'objet et
false sinon.
|
getOwnPropertyDescriptor() |
Object.getOwnPropertyDescriptor() renvoie
un descripteur de la propriété si elle existe sur l'objet passé en
argument. Si la propriété n'existe pas, la méthode renvoie
undefined . Si la valeur passée en premier argument n'est
pas un objet, elle sera automatiquement convertie en un objet.
|
Reflect.getOwnPropertyDescriptor() renvoie
un descripteur de la propriété si elle existe sur l'objet et
undefined si elle n'existe pas. Déclenche une exception
TypeError si la valeur passée en premier argument n'est pas
un objet.
|
getOwnPropertyDescriptors() |
Object.getOwnPropertyDescriptors() renvoie
un objet contenant un descripteur de propriété pour chaque objet passé
en argument. Renvoie un objet vide si l'objet passé en argument ne
contient pas les descripteurs.
|
N/A |
getPrototypeOf() |
Object.getPrototypeOf() renvoie le prototype de
l'objet fourni. Renvoie null s'il n'y a pas de propriétés
héritées. En ES5, déclenche une exception TypeError pour
les valeurs qui ne sont pas des objets (pour ES6 et ensuite, les valeurs
sont converties en objet).
|
Reflect.getPrototypeOf() renvoie le
prototype de l'objet fourni. Renvoie null s'il n'y a pas de
propriétés héritées et déclenche une exception
TypeError pour les valeurs qui ne sont pas des objets.
|
setPrototypeOf() |
Object.setPrototypeOf() renvoie l'objet fourni
si le prototype a pu être défini. Déclenche une exception
TypeError si le prototype utilisé n'était pas un objet ou
null ou si le prototype de l'objet à modifier n'est pas
extensible.
|
Reflect.setPrototypeOf() renvoie
true si le prototype a pu être défini sur l'objet et
false sinon (y compris lorsque le prototype n'est pas
extensible). Déclenche une exception TypeError si la cible
passée n'est pas un objet ou si le prototype à appliquer n'est pas un
objet ou n'est pas null .
|
isExtensible() |
Object.isExtensible() renvoie
true si l'objet est extensible et false sinon.
En ES5, déclenche une exception TypeError si le premier
argument fourni n'est pas un objet. Avec ES6 et ensuite, si l'argument
fourni est une valeur primitive, il est converti en un objet
non-extensible et la méthode renvoie donc false .
|
|
preventExtensions() |
|
Reflect.preventExtensions() renvoie
true si l'objet a été rendu non-extensible et
false sinon. Déclenche une exception
TypeError si l'argument n'est pas un objet.
|
keys() |
Object.keys() renvoie un tableau de chaînes de
caractères qui sont les noms des propriétés propres (et énumérables) de
l'objet. En ES5, déclenche une exception TypeError si la
cible n'est pas un objet. Avec ES6 et les versions suivantes, les
valeurs primitives sont converties en objets.
|
N/A |
ownKeys() |
N/A |
Reflect.ownKeys() renvoie un tableau des noms des
propriétés pour les clés des propriétés propres de de l'objet. Déclenche
une exception TypeError si la cible n'est pas un objet.
|