Voir le flux RSS

danielhagnoul

Fonction kObjectIterate (ES2018+)

Noter ce billet
par , 22/03/2019 à 21h24 (177 Affichages)
On construit des objets de différentes manières et on liste la composition des objets.

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// construction d'un objet à partir d'Array
let Obj = Object.fromEntries([
    ['foo', 1],
    ['bar', 2]
]);
 
// objet JSON classique
let unObj = {
    nom: 'Jean',
}
 
//ajout de unObj dans Obj
Obj.monObj = unObj;
 
// construction d'un auttre objet
let autreObj = {
    ...Obj, // clonage d'un objet par décomposition, opérateur ... 
    id: 'monID',
    print() {
        console.log(`id = ${autreObj.id}`);
    },
}
 
// construction d'un troisième objet
let troisiemeObj = {
    ...autreObj, // clonage d'un objet par décomposition, opérateur ... 
    id: 'troisièmeObjet',
    quatriemeObj: { // ajout d'un objet classique
        prenom: 'Daniel',
        nom: 'hagnoul',
    }
}
 
// liste des composants de l'objet, itération for of
const kObjIterate = Obj => {
    for (const [key, value] of Object.entries(Obj)) {
        console.log(`${key} = ${value}`);
 
        if (kGetType(value) === 'object') {
            console.log(`------`);
            console.log(`itération sur l'objet contenu dans ${key}`);
            kObjIterate(value);
            console.log(`------`);
        }
    }
}
 
kObjIterate(troisiemeObj);
 
/*
foo = 1
bar = 2
monObj = [object Object]
------
itération sur l'objet contenu dans monObj
nom = Jean
------
id = troisièmeObjet
print = print() {
    console.log(`id = ${ autreObj.id }`);
}
quatriemeObj = [object Object]
------
itération sur l'objet contenu dans quatriemeObj
prenom = Daniel
nom = hagnoul
------    
*/

La fonction kObjIterate a été ajoutée à mon fichier dvjhUtilities-1.8.5.js : <script defer src="https://danielhagnoul.developpez.com/lib/dvjh/dvjhUtilities-1.8.5.js"></script>.

Nota bene :

  • Un objet de classe à tous ses attributs enumerable à false par défaut. kObjIterate ne fonctionnera pas, tout comme 'for in', 'for of', Object.keys() et Reflect.ownKeys().
  • Parfois, vous devez copier fidèlement toutes les propriétés d'un objet, y compris les attributs (writable, enumerable, …), les getters et les setters. Object.assign () et l'opérateur de décomposition (...) ne feront pas le travail. Vous devez utiliser les descripteurs de propriété: const cloneObj = Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));.


Licence Creative Commons Attribution 2.0 Belgique

Envoyer le billet « Fonction kObjectIterate (ES2018+) » dans le blog Viadeo Envoyer le billet « Fonction kObjectIterate (ES2018+) » dans le blog Twitter Envoyer le billet « Fonction kObjectIterate (ES2018+) » dans le blog Google Envoyer le billet « Fonction kObjectIterate (ES2018+) » dans le blog Facebook Envoyer le billet « Fonction kObjectIterate (ES2018+) » dans le blog Digg Envoyer le billet « Fonction kObjectIterate (ES2018+) » dans le blog Delicious Envoyer le billet « Fonction kObjectIterate (ES2018+) » dans le blog MySpace Envoyer le billet « Fonction kObjectIterate (ES2018+) » dans le blog Yahoo

Commentaires