Connaitre l’objet global Javascript Object et ses propriétés
L’objet de tous les objets
En Javascript vous avez dû sans doute croiser Object, c’est un peu l’origine de tous les objets e, Javascript.
const obj = new Object()
console.log(obj)
{}
[[Prototype]]:Object
Si on creuse un peu plus l’objet :

Vous voyez toutes les propriétés nombreuse de cet object même primitif. Tous les objet en Javascript héritent de cet objet (Date, String etc).
Méthodes statique d Object
Les méthodes static peuvent peuvent être invoquées depuis Object sans instanciation
Object.keys({a:1,b:2}) // ['a','b']
Object.assign(target,…sources)
Copie des prpriétés d’un objet à un autre
const user = { name: "John" };
const details = { age: 30, country: "France" };
const merged = Object.assign({}, user, details);
console.log(merged);
// { name: 'John', age: 30, country: 'France' }
Object.create(proto,[propertiesObject])
Crée un nouvel objet avec en paramètre un prototype
const person = { greet() { console.log("Hello"); } };
const user = Object.create(person);
user.greet(); // Hello
Object.keys(obj)
Retourne un tableau de clé de l’objet
Object.keys({a:1, b:2}); // ['a', 'b']
Object.values(obj)
Retourne un tableau de valeurs de l’objet
Object.values({a:1, b:2}); // [1, 2]
Object.entries(obj)
Retourne un tableau de clé / valeur
Object.entries({a:1, b:2});
// [['a',1], ['b',2]]
// avec destructuring
for (const [key, val] of Object.entries({a:1, b:2})) {
console.log(key, val);
}
Object.freeze(obj)
Après un freeze, on ne peut plus ajouter,effacer ou modifier une propriété
const config = { debug: true };
Object.freeze(config);
config.debug = false; // inopérant
Intéressant pour un objet configuration que vous voulez rendre immuable
Object.seal(obj)
Empêche l’ajout ou suppression de propriété, mais autorise la modification
const user = { name: "John" };
Object.seal(user);
user.name = "Jane"; // Ok
user.age = 30; // ignoré
Object.getOwnPropertyNames(obj)
Retourne tous les noms des propriétés (énumérable et non énumérables)
const obj = Object.create({}, { hidden: { value: 42, enumerable: false } });
console.log(Object.getOwnPropertyNames(obj)); // ['hidden']
Ne donne que les nom de niveau 1
Object.getOwnPropertyDescriptors(obj)
Retourne les informations de chaque propriété
const obj = { a: 1 };
console.log(Object.getOwnPropertyDescriptors(obj));
Utile pour le clonage incluant getter et setters
Object.getPrototypeOf(obj)
Retourne le prototype (en gros le parent, ou parent du parent etc) d’un objet donné
const arr = []; console.log(Object.getPrototypeOf(arr) === Array.prototype); // true
Object.setPrototypeOf(obj,prototype)
Sette le prototype à un objet
const animal = { speak() { console.log("hi"); } };
const dog = {};
Object.setPrototypeOf(dog, animal);
dog.speak(); // hi
C’est comme ça qu’on fait de l’orienté objet en Javascript et pas avec des classes, qui sont plus familières à la plupart des programmeurs.
Object.hasOwn(obj,prop)
(Ecmascript 2022 ) alternative plus safe pour hasOwnProperty
const user = { name: "Alice" };
console.log(Object.hasOwn(user, "name")); // true
Object.fromEntries(entries)
Convertit un tableau de [key,value] en un objet
const entries = [["name", "Bob"], ["age", 25]];
const user = Object.fromEntries(entries);
console.log(user); // { name: 'Bob', age: 25 }
Object.is(value1,value2)
Dit si deux objets sont les même (comme ===, mais dans le cas de NaN est plus safe
Object.is(NaN, NaN); // true Object.is(0, -0); // false
Object.defineProperty(obj,prop,descriptor)
Définit ou modifie une propriété avec descripteur.
const user = {};
Object.defineProperty(user, "name", {
value: "Alice",
writable: false,
enumerable: true
});
Object.defineProperties(obj,props)
Définit de multiple propriétés
Méthodes d’instance
Les méthodes d’instance ne sont invocable que sur un objet instantié.
hasOwnProperty(prop)
Vérifie si la propriété existe directement dans l’objet.
const user = { name: "Alice" };
console.log(user.hasOwnProperty("name")); // true
isPrototypeOf(obj)
Vérifie si l’objet existe dans la chaine d eprototype d’un autre objet
function Animal() {}
function Dog() {}
Dog.prototype = Object.create(Animal.prototype);
const d = new Dog();
console.log(Animal.prototype.isPrototypeOf(d)); // true
propertyIsEnumerable(prop)
regarde si la propriété est énumérable
const obj = { x: 1 };
console.log(obj.propertyIsEnumerable("x")); // true
toString()
Retourne une représentation string de l’objet
console.log({}.toString()); // [object Object]
Utiliser Object.prototype.toString.call(value) pour détecter le type:
Object.prototype.toString.call([]); // [object Array]
Object.prototype.toString.call(123); // [object Number]
valueOf()
retourne la valeur primitive d’un objet (dans un contexte arithmétique)
const obj = { valueOf: () => 42 };
console.log(obj + 8); // 50
Applications pratiques de quelques méthodes
Clone an Object (shallow)
const copy = Object.assign({}, original);
Deep Clone (simple version)
const deepCopy = JSON.parse(JSON.stringify(original));
Merge Configurations
const defaultConfig = { debug: false, port: 8080 };
const userConfig = { debug: true };
const config = Object.assign({}, defaultConfig, userConfig);
Create Object from Key/Value Pairs
const pairs = [["id", 1], ["name", "John"]]; const obj = Object.fromEntries(pairs);
Immutable Constant Object
const roles = Object.freeze({ ADMIN: "admin", USER: "user" });











