La propriété Object.prototype
représente le prototype de Object
.
Attributs de Object.prototype |
|
---|---|
Écrivable | Non |
Énumérable | Non |
Configurable | Non |
Description
Tous les objets JavaScript descendent de Object
; aussi, tous les objets héritent 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 (sauf pour un Object
dont le prototype est null
comme Object.create(null)
). Par exemple, d'autres prototypes de constructeurs surchargent la propriété constructor
et fournissent leur propre méthode toString()
. Les modifications apportées au prototype d'Object
se propagent à tous les objets sauf si celles-ci concernent des propriétés et des méthodes ayant été surchargées en aval de la chaîne de prototypes.
Propriétés
Object.prototype.constructor
- Définit la fonction qui a créé le prototype d'un objet.
Object.prototype.__proto__
- Pointe vers l'objet qui a été utilisé comme prototype lors de l'instanciation de l'objet.
Object.prototype.__noSuchMethod__
- 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__
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__
Utilisée pour faire référence au contexte de l'objet. Cette propriété a été retirée.
Méthodes
Object.prototype.__defineGetter__()
- 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__()
- Associe une fonction à une propriété qui, lorsqu'on la définit, exécute la fonction qui modifie la propriété.
Object.prototype.__lookupGetter__()
- Renvoie la fonction associée à la propriété définie par la méthode
__defineGetter__
. Object.prototype.__lookupSetter__()
- 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 donné est dans la chaîne de prototype de l'objet pour lequel on a utilisé la méthode.
Object.prototype.propertyIsEnumerable()
- Renvoie un booléen qui indique si l'attribut ECMAScript interne [[Enumerable]] est défini.
Object.prototype.toSource()
- 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()
- 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()
- Ajoute un point d'arrêt conditionnel sur une propriété de l'objet.
Object.prototype.eval()
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() { 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
Spécification | État | Commentaires |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Définition initiale. Implémentée avec JavaScript 1.0. |
ECMAScript 5.1 (ECMA-262) La définition de 'Object.prototype' dans cette spécification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Object.prototype' dans cette spécification. |
Standard | |
ECMAScript 2017 Draft (ECMA-262) La définition de 'Object.prototype' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) |