Méthodes d’objet JavaScript ES5

ECMAScript 5 (2009) a ajouté de nombreuses nouvelles méthodes objet à JavaScript.
Gestion des objets
// Créer un objet avec un objet existant comme prototype
Objet.create()
// Ajout ou modification d’une propriété d’objet
Object.defineProperty(objet, propriété, descripteur)
// Ajout ou modification des propriétés d’un objet
Object.defineProperties(objet, descripteurs)
// Accéder aux propriétés
Object.getOwnPropertyDescriptor(objet, propriété)
// Renvoie toutes les propriétés sous forme de tableau
Object.getOwnPropertyNames(objet)
// Accéder au prototype
Objet.getPrototypeOf(objet)
// Retourne les propriétés énumérables sous forme de tableau
Objet.keys(objet)
Protéger des objets
// Empêche l’ajout de propriétés à un objet
Object.preventExtensions(objet)
// Renvoie true si des propriétés peuvent être ajoutées à un objet
Object.isExtensible(objet)
// Empêche les modifications des propriétés de l’objet (pas des valeurs)
Objet.sceau (objet)
// Renvoie true si l’objet est scellé
Object.isSealed(objet)
// Empêche toute modification d’un objet
Objet.freeze(objet)
// Renvoie true si l’objet est gelé
Object.isFrozen (objet)
Modification d’une valeur de propriété
Syntaxe
Object.defineProperty(objet, propriété, {valeur : valeur})
Cet exemple modifie une valeur de propriété :
Exemple
const personne = {
prénom : « John »,
nom : « Biche »,
langue : « EN »
} ;
// Changer une propriété
Object.defineProperty(person, « language », {value : « NO »});
Essayez-le vous-même »
Modification des métadonnées
ES5 permet de modifier les métadonnées de propriété suivantes :
writable : true // La valeur de la propriété peut être modifiée
enumerable : true // La propriété peut être énumérée
configurable : true // La propriété peut être reconfigurée
writable : false // La valeur de la propriété ne peut pas être modifiée
enumerable : false // La propriété ne peut pas être énumérée
configurable : false // La propriété ne peut pas être reconfigurée
ES5 permet de modifier les getters et les setters :
// Définition d’un getter
obtenir : fonction() { renvoyer la langue }
// Définition d’un setter
set : fonction(valeur) { langue = valeur }
Cet exemple rend le langage en lecture seule :
Object.defineProperty(person, « language », {writable:false});
Cet exemple rend le langage non énumérable :
Object.defineProperty(personne, « langue », {enumerable:false});
Liste de toutes les propriétés
Cet exemple répertorie toutes les propriétés d’un objet :
Exemple
const personne = {
prénom : « John »,
nom : « Biche »,
langue : « EN »
} ;
Object.defineProperty(personne, « langue », {enumerable:false});
Object.getOwnPropertyNames(personne); // Retourne un tableau de propriétés
Essayez-le vous-même »
Liste des propriétés énumérables
Cet exemple répertorie uniquement les propriétés énumérables d’un objet :
Exemple
const personne = {
prénom : « John »,
nom : « Biche »,
langue : « EN »
} ;
Object.defineProperty(personne, « langue », {enumerable:false});
Object.keys(personne); // Retourne un tableau de propriétés énumérables
Essayez-le vous-même »
Ajouter une propriété
Cet exemple ajoute une nouvelle propriété à un objet :
Exemple
// Crée un objet :
const personne = {
prénom : « John »,
nom : « Biche »,
langue : « EN »
} ;
// Ajouter une propriété
Object.defineProperty(person, « year », {value: »2008″});
Essayez-le vous-même »
Ajouter des getters et des setters
Le Object.defineProperty()
peut également être utilisée pour ajouter des Getters et des Setters :
Exemple
//Créer un objet
const person = {firstName: »John », lastName: »Doe »} ;
// Définition d’un getter
Object.defineProperty(person, « fullName », {
get : function() {return this.firstName + » » + this.lastName ;}
});
Essayez-le vous-même »
Un contre-exemple
Exemple
// Définir l’objet
const obj = {compteur : 0} ;
// Définir les setters
Objet.defineProperty(obj, « réinitialiser », {
obtenir : fonction () {this.counter = 0;}
});
Object.defineProperty(obj, « incrément », {
obtenir : fonction () {this.counter++;}
});
Object.defineProperty(obj, « décrémenter », {
get : fonction () {this.counter–;}
});
Objet.defineProperty(obj, « ajouter », {
set : fonction (valeur) {this.counter += valeur ;}
});
Object.defineProperty(obj, « soustraire », {
set : fonction (i) {this.counter -= i;}
});
// Jouez avec le compteur :
obj.reset;
obj.add = 5 ;
obj. soustraire = 1 ;
obj.incrément ;
obj.decrement;
Essayez-le vous-même »
#Méthodes #dobjet #JavaScript #ES5