Format (Représentation) interne des objets - javascript tome ix

J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga
JAVASC RI PT
(Programmation Internet)
VOL. IX
+243 - 851278216 - 899508675 - 995624714 - 902263541 - 813572818
La dernière révision de ce texte est disponible sur CD.
CHAPITRE 16 :
Format (Représentation) Interne des objets
en JavaScript, avec la commande
Object.getOwnPropertyDescriptors (object)
:
La commande Object.getOwnPropertyDescriptors (object)
liste les attributs [propres] ou descripteurs d’un objet.
Quand nous créons un objet, les propriétés de cet objet sont
en fait, à l’instar du prototype, des objets ayant leurs propres
propriétés appelées ici ATTRIBUTS, ses attributs comportant
chacune à leur tour ses propres propriétés suivantes et les
mêmes pour tous les attributs : value (en fait la valeur de la
propriété), writable, enumerable, configurable.
Rappelons que le prototype est une propriété particulière
(pas comme les autres) qui renferme les propriétés dispo-
nibles pour l’objet, mais aussi partageables avec et héritables
par ses fils, alors que les propriétés ordinaires (non conte-
J.D.B. DIASOLUKA Nz.
Luyalu
JavaScript Tome-IX
Format Interne des objets
- 2 / 29 - mardi, 2. octobre 2018 (12:00 )
nues dans le prototype et définies directement dans le corps
de l’objet) ne sont pas héritables. Le prototype renferme
donc l’ensemble de propriétés intrinsèques communes à
l’objet en cours, et ses descendants.
Cependant, les propriétés propres du constructeur définies
lors de sa « définition » sont toutes héritables, mais ses va-
riables locales ne le sont pas.
De même, si on redirige le prototype du constructeur vers un
autre objet (ou fonction), le prototype des instances de ce
constructeur créées sous l’ancien prototype continueront à
pointer le prototype du constructeur qui était en cours lors de
la construction/création de ces instances. Ces instances ne
reconnaîtront pas le nouveau prototype.
Tandis que les instances créées après redirection du proto-
type du constructeur pointeront ce nouveau prototype et ne
reconnaîtront pas l’ancien prototype.
On ne peut pas accéder aux propriétés propres d’un cons-
tructeur (dans le sens qu’elles n’appartiennent pas à son pro-
totype) via le nom du constructeur
(nom_constructeur.property) quand ces propriétés ont é
définies dans le corps de définition du constructeur.
J.D.B. DIASOLUKA Nz.
Luyalu
JavaScript Tome-IX
Format Interne des objets
- 3 / 29 - mardi, 2. octobre 2018 (12:00 )
Mais les propriétés propres d’un constructeur définies en
dehors de son corps de définition sont accessibles via le nom
de ce constructeur (nom_constructeur.property).
Une instance n’hérite jamais d'une variable locale de son
constructeur.
Une instance n’hérite pas d'une propriété non ajoutée au
constructeur via le prototype en cours. Ce genre de proprié-
tés sont des propriétés propres (non partageable ni héri-
table) du constructeur.
Le prototype étant un objet à part entière, la créa-
tion/redirection d’un nouveau prototype DOIT se faire avec
l’opérateur « new ». (voyez l’exemple à la fin de cet exposé
chapitre XIII p. 22).
J.D.B. DIASOLUKA Nz.
Luyalu
JavaScript Tome-IX
Format Interne des objets
- 4 / 29 - mardi, 2. octobre 2018 (12:00 )
I. Format de stockage interne d’une String :
Nous scannerons d’abord la représentation interne d’un objet
String (chaîne [de caractères]). Un objet String (chaîne [de
caractères]) est représenté internement sous forme d’une
Array (tableau monodimensionnelle) dont les indices vont de
zéro à n-1, n étant la taille (length ou nombre de caractères)
de la chaîne.
<script type="text/javascript"> "use strict";
// Avec “ var ”
var stgv = "La filaire qui rend aveugle !";
console.log(stgv);
// La filaire qui rend aveugle !
con-
sole.log(Object.getOwnPropertyDescriptors(stgv));
// Object { 0: {…}, 1: {…}, 2: {…}, 3: {…}, 4: {…},
5: {…}, 6: {…}, 7: {…}, 8: {…}, 9: {…}, … }
/*
0: {value: "L", writable: false, enumerable: true,
configurable: false}
1: {value: "a", writable: false, enumerable: true,
configurable: false}
2: {value: " ", writable: false, enumerable: true,
configurable: false}
3: {value: "f", writable: false, enumerable: true,
configurable: false}
4: {value: "i", writable: false, enumerable: true,
configurable: false}
5: {value: "l", writable: false, enumerable: true,
configurable: false}
6: {value: "a", writable: false, enumerable: true,
configurable: false}
7: {value: "i", writable: false, enumerable: true,
configurable: false}
8: {value: "r", writable: false, enumerable: true,
configurable: false}
J.D.B. DIASOLUKA Nz.
Luyalu
JavaScript Tome-IX
Format Interne des objets
- 5 / 29 - mardi, 2. octobre 2018 (12:00 )
9: {value: "e", writable: false, enumerable: true,
configurable: false}
10: {value: " ", writable: false, enumerable: true,
configurable: false}
11: {value: "q", writable: false, enumerable: true,
configurable: false}
12: {value: "u", writable: false, enumerable: true,
configurable: false}
13: {value: "i", writable: false, enumerable: true,
configurable: false}
14: {value: " ", writable: false, enumerable: true,
configurable: false}
15: {value: "r", writable: false, enumerable: true,
configurable: false}
16: {value: "e", writable: false, enumerable: true,
configurable: false}
17: {value: "n", writable: false, enumerable: true,
configurable: false}
18: {value: "d", writable: false, enumerable: true,
configurable: false}
19: {value: " ", writable: false, enumerable: true,
configurable: false}
20: {value: "a", writable: false, enumerable: true,
configurable: false}
21: {value: "v", writable: false, enumerable: true,
configurable: false}
22: {value: "e", writable: false, enumerable: true,
configurable: false}
23: {value: "u", writable: false, enumerable: true,
configurable: false}
24: {value: "g", writable: false, enumerable: true,
configurable: false}
25: {value: "l", writable: false, enumerable: true,
configurable: false}
26: {value: "e", writable: false, enumerable: true,
configurable: false}
27: {value: " ", writable: false, enumerable: true,
configurable: false}
28: {value: "!", writable: false, enumerable: true,
configurable: false}
length: {value: 29, writable: false, enumerable:
false, configurable: false}
__proto__: Object
*/
1 / 29 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !