From 844f5103992238c0c23203286dad16a466e89c97 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:09 +0200 Subject: move *.html to *.md --- .../object/getownpropertynames/index.html | 177 --------------------- .../object/getownpropertynames/index.md | 177 +++++++++++++++++++++ 2 files changed, 177 insertions(+), 177 deletions(-) delete mode 100644 files/fr/web/javascript/reference/global_objects/object/getownpropertynames/index.html create mode 100644 files/fr/web/javascript/reference/global_objects/object/getownpropertynames/index.md (limited to 'files/fr/web/javascript/reference/global_objects/object/getownpropertynames') diff --git a/files/fr/web/javascript/reference/global_objects/object/getownpropertynames/index.html b/files/fr/web/javascript/reference/global_objects/object/getownpropertynames/index.html deleted file mode 100644 index 88f96ed522..0000000000 --- a/files/fr/web/javascript/reference/global_objects/object/getownpropertynames/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Object.getOwnPropertyNames() -slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames -tags: - - ECMAScript 5 - - JavaScript - - JavaScript 1.8.5 - - Méthode - - Object - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames -original_slug: Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames ---- -
{{JSRef}}
- -

La méthode Object.getOwnPropertyNames() renvoie un tableau de toutes les propriétés (qu'elles soient énumérables ou non, tant qu'elles ne sont pas désignées par un symbole) propres à un objet (c'est-à-dire n'étant pas héritées via la chaîne de prototypes).

- -
{{EmbedInteractiveExample("pages/js/object-getownpropertynames.html")}}
- -

Syntaxe

- -
Object.getOwnPropertyNames(obj)
- -

Paramètres

- -
-
obj
-
L'objet dont seront listées les propriétés propres énumérables et non-énumérables.
-
- -

Valeur de retour

- -

Un tableau de chaînes de caractères qui sont les noms des propriétés propres (celles directement rattachées à l'objet) de l'objet passé en argument.

- -

Description

- -

Object.getOwnPropertyNames renvoie un tableau dont les éléments sont des chaînes de caractères correspondant aux noms des propriétés énumerables et non-énumerables appartenant directement à l'objet obj. L'ordre des propriétés énumérables est cohérent avec l'ordre utilisé dans une boucle {{jsxref("Instructions/for...in","for...in")}} (ou avec {{jsxref("Object.keys")}}) parmi les propriétés de l'objet. L'ordre des propriétés non-énumérables dans le tableau et parmi les propriétés énumérables n'est pas défini.

- -

Exemples

- -

Utiliser Object.getOwnPropertyNames()

- -
var arr = ["a", "b", "c"];
-console.log(Object.getOwnPropertyNames(arr).sort());
-// ["0", "1", "2", "length"]
-
-// Objet semblable à un tableau (array-like)
-var obj = { 0: "a", 1: "b", 2: "c"};
-console.log(Object.getOwnPropertyNames(obj).sort());
-// ["0", "1", "2"]
-
-
-// On affiche les noms et les valeurs
-// des propriétés avec Array.forEach
-Object.getOwnPropertyNames(obj).forEach(
-  function(val, idx, array) {
-    console.log(val + " -> " + obj[val]);
-});
-// affiche
-// 0 -> a
-// 1 -> b
-// 2 -> c
-
-// propriété non-énumérable
-var mon_obj = Object.create({}, {
-  getToto: {
-    value: function() { return this.toto; },
-    enumerable: false
-  }
-});
-mon_obj.toto = 1;
-
-console.log(Object.getOwnPropertyNames(mon_obj).sort());
-// ["toto", "getToto"]
-
- -

Si on souhaite n'avoir que les propriétés énumérables, on peut utiliser {{jsxref("Object.keys")}} ou bien une boucle {{jsxref("Instructions/for...in","for...in")}} (cette méthode renverra également les propriétés héritées via la chaîne de prototypes si on ne filtre pas avec la méthode {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}}).

- -

Les propriétés héritées via la chaîne de prototype ne sont pas listées :

- -
function ClasseParente() {}
-ClasseParente.prototype.inheritedMethod = function () {};
-
-function ClasseFille () {
-  this.prop = 5;
-  this.method = function () {};
-}
-ClasseFille.prototype = new ClasseParente();
-ClasseFille.prototype.prototypeMethod = function () {};
-
-console.log(
-  Object.getOwnPropertyNames(
-    new ClasseFille() // ["prop", "method"]
-  )
-)
-
- -

Obtenir uniquement les propriétés non-énumérables

- -

On utilise ici la fonction {{jsxref("Array.prototype.filter()")}} pour retirer les clés énumérables (obtenus avec {{jsxref("Object.keys()")}}) de la liste de toutes les clés (obtenues avec Object.getOwnPropertynames) afin de n'avoir que les propriétés propres non-énumérables.

- -
var target = myObject;
-var enum_et_nonenum = Object.getOwnPropertyNames(target);
-var enum_uniquement = Object.keys(target);
-var nonenum_uniquement = enum_et_nonenum.filter(function(key) {
-  var indexInEnum = enum_uniquement.indexOf(key)
-  if (indexInEnum == -1) {
-    // non trouvée dans enum_uniquement indique
-    // que la clé est non-énumérable, on la
-    // garde donc dans le filtre avec true
-    return true;
-  } else {
-    return false;
-  }
-});
-
-console.log(nonenum_uniquement);
-
- -

Notes

- -

Pour ES5, si l'argument passé à la méthode n'est pas un objet (mais une valeur d'un autre type primitif), une exception {{jsxref("TypeError")}} sera levée. Pour ES2015, un argument qui n'est pas un objet sera d'abord transformé en objet avant que la méthode soit appliquée.

- -
Object.getOwnPropertyNames('toto')
-TypeError: "toto" n'est pas un objet // code ES5
-
-Object.getOwnPropertyNames('toto')
-['length', '0', '1', '2']         // code ES2015
- -

Spécifications

- - - - - - - - - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES5.1', '#sec-15.2.3.4', 'Object.getOwnPropertyNames')}}{{Spec2('ES5.1')}}Définition initiale.
- Implémentée avec JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.builtins.Object.getOwnPropertyNames")}}

- -

Notes spécifiques à Firefox

- -

Pour les versions antérieures à Firefox 28 {{geckoRelease("28")}}, Object.getOwnPropertyNames ne listait pas les propriétés non-résolues des objets {{jsxref("Error")}}. Cela a été résolu dans les versions suivantes ({{bug("724768")}}).

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/global_objects/object/getownpropertynames/index.md b/files/fr/web/javascript/reference/global_objects/object/getownpropertynames/index.md new file mode 100644 index 0000000000..88f96ed522 --- /dev/null +++ b/files/fr/web/javascript/reference/global_objects/object/getownpropertynames/index.md @@ -0,0 +1,177 @@ +--- +title: Object.getOwnPropertyNames() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +tags: + - ECMAScript 5 + - JavaScript + - JavaScript 1.8.5 + - Méthode + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +original_slug: Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames +--- +
{{JSRef}}
+ +

La méthode Object.getOwnPropertyNames() renvoie un tableau de toutes les propriétés (qu'elles soient énumérables ou non, tant qu'elles ne sont pas désignées par un symbole) propres à un objet (c'est-à-dire n'étant pas héritées via la chaîne de prototypes).

+ +
{{EmbedInteractiveExample("pages/js/object-getownpropertynames.html")}}
+ +

Syntaxe

+ +
Object.getOwnPropertyNames(obj)
+ +

Paramètres

+ +
+
obj
+
L'objet dont seront listées les propriétés propres énumérables et non-énumérables.
+
+ +

Valeur de retour

+ +

Un tableau de chaînes de caractères qui sont les noms des propriétés propres (celles directement rattachées à l'objet) de l'objet passé en argument.

+ +

Description

+ +

Object.getOwnPropertyNames renvoie un tableau dont les éléments sont des chaînes de caractères correspondant aux noms des propriétés énumerables et non-énumerables appartenant directement à l'objet obj. L'ordre des propriétés énumérables est cohérent avec l'ordre utilisé dans une boucle {{jsxref("Instructions/for...in","for...in")}} (ou avec {{jsxref("Object.keys")}}) parmi les propriétés de l'objet. L'ordre des propriétés non-énumérables dans le tableau et parmi les propriétés énumérables n'est pas défini.

+ +

Exemples

+ +

Utiliser Object.getOwnPropertyNames()

+ +
var arr = ["a", "b", "c"];
+console.log(Object.getOwnPropertyNames(arr).sort());
+// ["0", "1", "2", "length"]
+
+// Objet semblable à un tableau (array-like)
+var obj = { 0: "a", 1: "b", 2: "c"};
+console.log(Object.getOwnPropertyNames(obj).sort());
+// ["0", "1", "2"]
+
+
+// On affiche les noms et les valeurs
+// des propriétés avec Array.forEach
+Object.getOwnPropertyNames(obj).forEach(
+  function(val, idx, array) {
+    console.log(val + " -> " + obj[val]);
+});
+// affiche
+// 0 -> a
+// 1 -> b
+// 2 -> c
+
+// propriété non-énumérable
+var mon_obj = Object.create({}, {
+  getToto: {
+    value: function() { return this.toto; },
+    enumerable: false
+  }
+});
+mon_obj.toto = 1;
+
+console.log(Object.getOwnPropertyNames(mon_obj).sort());
+// ["toto", "getToto"]
+
+ +

Si on souhaite n'avoir que les propriétés énumérables, on peut utiliser {{jsxref("Object.keys")}} ou bien une boucle {{jsxref("Instructions/for...in","for...in")}} (cette méthode renverra également les propriétés héritées via la chaîne de prototypes si on ne filtre pas avec la méthode {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}}).

+ +

Les propriétés héritées via la chaîne de prototype ne sont pas listées :

+ +
function ClasseParente() {}
+ClasseParente.prototype.inheritedMethod = function () {};
+
+function ClasseFille () {
+  this.prop = 5;
+  this.method = function () {};
+}
+ClasseFille.prototype = new ClasseParente();
+ClasseFille.prototype.prototypeMethod = function () {};
+
+console.log(
+  Object.getOwnPropertyNames(
+    new ClasseFille() // ["prop", "method"]
+  )
+)
+
+ +

Obtenir uniquement les propriétés non-énumérables

+ +

On utilise ici la fonction {{jsxref("Array.prototype.filter()")}} pour retirer les clés énumérables (obtenus avec {{jsxref("Object.keys()")}}) de la liste de toutes les clés (obtenues avec Object.getOwnPropertynames) afin de n'avoir que les propriétés propres non-énumérables.

+ +
var target = myObject;
+var enum_et_nonenum = Object.getOwnPropertyNames(target);
+var enum_uniquement = Object.keys(target);
+var nonenum_uniquement = enum_et_nonenum.filter(function(key) {
+  var indexInEnum = enum_uniquement.indexOf(key)
+  if (indexInEnum == -1) {
+    // non trouvée dans enum_uniquement indique
+    // que la clé est non-énumérable, on la
+    // garde donc dans le filtre avec true
+    return true;
+  } else {
+    return false;
+  }
+});
+
+console.log(nonenum_uniquement);
+
+ +

Notes

+ +

Pour ES5, si l'argument passé à la méthode n'est pas un objet (mais une valeur d'un autre type primitif), une exception {{jsxref("TypeError")}} sera levée. Pour ES2015, un argument qui n'est pas un objet sera d'abord transformé en objet avant que la méthode soit appliquée.

+ +
Object.getOwnPropertyNames('toto')
+TypeError: "toto" n'est pas un objet // code ES5
+
+Object.getOwnPropertyNames('toto')
+['length', '0', '1', '2']         // code ES2015
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES5.1', '#sec-15.2.3.4', 'Object.getOwnPropertyNames')}}{{Spec2('ES5.1')}}Définition initiale.
+ Implémentée avec JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ESDraft')}} 
+ +

Compatibilité des navigateurs

+ +

{{Compat("javascript.builtins.Object.getOwnPropertyNames")}}

+ +

Notes spécifiques à Firefox

+ +

Pour les versions antérieures à Firefox 28 {{geckoRelease("28")}}, Object.getOwnPropertyNames ne listait pas les propriétés non-résolues des objets {{jsxref("Error")}}. Cela a été résolu dans les versions suivantes ({{bug("724768")}}).

+ +

Voir aussi

+ + -- cgit v1.2.3-54-g00ecf