Méthodes d'objet ES5 JavaScript
- Page précédente Prototype d'objet JS
- Page suivante Définition de la fonction JS
ECMAScript 5 (2009) a ajouté de nombreux nouveaux méthodes d'objets à JavaScript.
Gestion de l'objet
// Crée un objet avec l'objet existant comme prototype Object.create() // Ajoute ou modifie les propriétés de l'objet Object.defineProperty(object, property, descriptor) // Ajoute ou modifie les propriétés de l'objet Object.defineProperties(object, descriptors) // Accès à la propriété Object.getOwnPropertyDescriptor(object, property) // Retourne un tableau de toutes les propriétés Object.getOwnPropertyNames(object) // Accès à l'original Object.getPrototypeOf(object) // Retourne un tableau des propriétés enumerable Object.keys(object)
Protection de l'objet
// Empêche l'ajout de propriétés à l'objet Object.preventExtensions(object) // Retourne true si les propriétés peuvent être ajoutées à l'objet Object.isExtensible(object) // Empêche la modification des propriétés de l'objet (pas des valeurs) Object.seal(object) // Retourne true si l'objet est scellé Object.isSealed(object) // Empêche toute modification de l'objet Object.freeze(object) // Retourne true si l'objet est gelé Object.isFrozen(object)
Modification de la valeur de la propriété
Syntaxe
Object.defineProperty(object, property, {value : value)
Instance
Exemple de modification de la valeur de la propriété :
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; // Modification de la propriété Object.defineProperty(person, "language", {value : "NO"});
Modification des métadonnées
ES5 permet de modifier les métadonnées des propriétés suivantes :
writable : true // La valeur de la propriété peut être modifiée enumerable : true // Propriété enumerable configurable : true // Propriété réconfigurable
writable : false // La valeur de la propriété ne peut pas être modifiée enumerable : false // Propriété non enumerable configurable : false // La propriété ne peut pas être réconfigurée
ES5 permet de modifier getter et setter :
// Définition du getter get: function() { return language } // Définition du setter set: function(value) { language = value }
Dans cet exemple, language est configuré en lecture seule :
Object.defineProperty(person, "language", {writable:false});
Dans cet exemple, language est rendu non enumerable :
Object.defineProperty(person, "language", {enumerable:false});
Répertorier toutes les propriétés
Dans cet exemple, toutes les propriétés de l'objet sont répertoriées :
Instance
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.getOwnPropertyNames(person); // Retourne un tableau de tableaux
Répertorier les propriétés enumerables
Dans cet exemple, seules les propriétés enumerables de l'objet sont répertoriées :
Instance
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.keys(person); // Retourne un tableau des propriétés enumerables
Ajout de propriété
Dans cet exemple, une nouvelle propriété est ajoutée à l'objet :
Instance
// Création de l'objet const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; // Ajout de propriété Object.defineProperty(person, "year", {value:"2008"});
Ajouter Getter et Setter
Object.defineProperty()
La méthode peut également être utilisée pour ajouter Getter et Setter :
Instance
// Création de l'objet const person = {firstName:"Bill", lastName:"Gates"}; // Définition du getter Object.defineProperty(person, "fullName", { get: function () {return this.firstName + " " + this.lastName;} });
Une instance de compteur
// Définition de l'objet const obj = {counter:0}; // Définition du setter Object.defineProperty(obj, "reset", { get : function () {this.counter = 0;} }); Object.defineProperty(obj, "increment", { get : function () {this.counter++;} }); Object.defineProperty(obj, "decrement", { get : function () {this.counter--;} }); Object.defineProperty(obj, "add", { set : function (value) {this.counter += value;} }); Object.defineProperty(obj, "subtract", { set : function (i) {this.counter -= i;} }); // Opérations sur le compteur : obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
- Page précédente Prototype d'objet JS
- Page suivante Définition de la fonction JS