Object.prototype

La propriété Object.prototype représente le prototype de Object.

Attributs de Object.prototype
Écrivable Non
Énumérable Non
Configurable Non

Description

La quasi-totalité des objets JavaScript descendent de Object ; un objet classique héritera donc des méthodes et propriétés de Object.prototype. Comme pour toutes les propriétés héritées, il est possible de surcharger ces propriétés. Par exemple, d'autres prototypes de constructeurs surchargent la propriété constructor et fournissent leur propre méthode toString().

Cependant, on peut volontairement créer des objets qui ne descendent pas de Object (par exemple avec Object.create(null)) ou les modifier afin que ce ne soit plus le cas (par exemple avec la méthode Object.setPrototypeOf()).

Les modifications apportées aux propriétés du prototype d'Object impactent donc tous ces objets via la chaîne de prototypes, sauf si ces propriétés sont surchargées. Ce puissant mécanisme permet ainsi de modifier le comportement des objets ou d'y ajouter des fonctionnalités.

Propriétés

Object.prototype.constructor
Définit la fonction qui a créé le prototype d'un objet.
Object.prototype.__proto__ Cette API n'a pas été standardisée.
Pointe vers l'objet qui a été utilisé comme prototype lors de l'instanciation de l'objet.
Object.prototype.__noSuchMethod__ Cette API n'a pas été standardisée.
Permet de définir une fonction qui sera exécutée lors d'une tentative d'accès à une méthode non-définie pour l'objet.
Object.prototype.__count__ This is an obsolete API and is no longer guaranteed to work.
UTilisée pour renvoyer le nombre de propriétés énumérables sur un objet défini par l'utilisateur. Cette propriété a été retirée.
Object.prototype.__parent__ This is an obsolete API and is no longer guaranteed to work.
Utilisée pour faire référence au contexte de l'objet. Cette propriété a été retirée.

Méthodes

Object.prototype.__defineGetter__() Cette API n'a pas été standardisée. Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner.
Associe une fonction à une propriété qui, lorsqu'on y accède, exécute la fonction et renvoie la valeur de retour.
Object.prototype.__defineSetter__() Cette API n'a pas été standardisée. Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner.
Associe une fonction à une propriété qui, lorsqu'on la définit, exécute la fonction qui modifie la propriété.
Object.prototype.__lookupGetter__() Cette API n'a pas été standardisée. Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner.
Renvoie la fonction associée à la propriété définie par la méthode __defineGetter__.
Object.prototype.__lookupSetter__() Cette API n'a pas été standardisée. Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner.
Renvoie la fonction associée avec la propriété définie par la méthode __defineSetter__.
Object.prototype.hasOwnProperty()
Renvoie un booléen qui indique si l'objet contient la propriété donnée comme une propriété propre (non héritée via la chaîne de prototypes).
Object.prototype.isPrototypeOf()
Renvoie un booléen qui indique si l'objet courant fait partie de la chaîne de prototype de l'objet passé en argument.
Object.prototype.propertyIsEnumerable()
Renvoie un booléen qui indique si l'attribut ECMAScript interne [[Enumerable]] est défini.
Object.prototype.toSource() Cette API n'a pas été standardisée.
Renvoie une chaîne de caractères qui est un littéral objet représentant l'objet pour lequel la méthode a été appelée. La valeur de retour peut être utilisée pour créer un nouvel objet.
Object.prototype.toLocaleString()
Appelle la méthode toString().
Object.prototype.toString()
Renvoie une chaîne de caractères représentant l'objet.
Object.prototype.unwatch() Cette API n'a pas été standardisée.
Supprime un point d'arrêt conditionnel placé sur une propriété de l'objet.
Object.prototype.valueOf()
Renvoie la valeur primitive de l'objet.
Object.prototype.watch() Cette API n'a pas été standardisée.
Ajoute un point d'arrêt conditionnel sur une propriété de l'objet.
Object.prototype.eval() This is an obsolete API and is no longer guaranteed to work.
Utilisée pour évaluer une chaîne de caractères étant du code JavaScript dans le contexte de l'objet. Cette méthode a été retirée.

Exemples

Javascript se base sur un modèle prototypal et non pas classique (au sens « modèle à base de classes »). Le prototype d'un objet est utilisé pour fournir de façon dynamique des propriétés aux objets qui héritent du prototype.

Par exemple :

var Personne = function(nom) {
  this.name = nom;
  this.peutParler = true;
  this.salutation = function() {
    if (this.peutParler) {
      console.log('Bonjour, je suis ' + this.nom);
    }
  };
};

var Employe = function(nom, titre) {
  this.nom = nom;
  this.titre = titre;
  this.salutation = function() {
    if (this.peutParler) {
      console.log("Bonjour, je suis " + this.nom + ", le " + this.titre);
    }
  };
};
Employe.prototype = new Personne();

var Client = function(nom) {
  this.nom = nom;
};
Client.prototype = new Personne();

var Mime = function(nom) {
  this.nom = nom;
  this.peutParler = false;
};
Mime.prototype = new Personne();

var bob = new Employe('Bob', 'bricoleur');
var joe = new Client('Joe');
var rg = new Employe('Red Green', 'réparateur');
var mike = new Client('Mike');
var mime = new Mime('Mime');
bob.salutation();
// Bonjour, je suis Bob, le bricoleur

joe.salutation();
// Bonjour, je suis Joe

rg.salutation();
// Bonjour, je suis Red Green, le réparateur

mike.salutation();
// Bonjour, je suis Mike

mime.salutation();

Spécifications

Voir aussi