Object.create()

Crée un nouvel objet avec le prototype donné.

Renvoie
Un nouvel objet.
Modifie l’original
Non
Sur cette page

Exemple

#
JavaScript
const hero = {
  greet() {
    return `Salut, je suis ${this.name}`
  }
}

const lucas = Object.create(hero)
lucas.name = 'Lucas'

console.log(lucas.greet())
console.log(Object.keys(lucas))
console.log(Object.getPrototypeOf(lucas) === hero)
Console
Salut, je suis Lucas
['name']
true

Définition et utilisation

#

La méthode Object.create(proto) crée un objet vide dont le prototype est l’objet donné. Le nouvel objet hérite de toutes ses propriétés et méthodes, même s’il ne les contient pas lui-même.

C’est le mécanisme d’héritage de base en JavaScript, sur lequel les classes elles-mêmes reposent. Dans le code de tous les jours, on utilise plus souvent la syntaxe class, mais Object.create() aide à comprendre comment fonctionne la chaîne de prototypes.

Appeler Object.create(null) crée un objet sans aucun prototype. Ce « dictionnaire pur » n’a pas de clés héritées comme toString, ce qui est parfois utile pour stocker des données quelconques.

Syntaxe

#
Syntaxe
Object.create(proto)
Object.create(proto, propertiesObject)

Paramètres

#
  • proto

    objet ou null

    Le prototype du nouvel objet.
  • propertiesObject

    optionnel

    Des descripteurs de propriétés à définir immédiatement.

Plus d’exemples

#
Un objet sans prototype
JavaScript
const dictionary = Object.create(null)
dictionary.toString = 'ce n’est qu’une clé'

console.log(dictionary.toString)
console.log('hasOwnProperty' in dictionary)
Console
ce n’est qu’une clé
false

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Dans du code neuf, la syntaxe class est généralement plus pratique pour l’héritage.
  • Pour des dictionnaires à clés quelconques, Map est souvent un meilleur choix.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.