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