Cette propriété renvoie une référence à la fonction Object
qui a créé le prototype de l'instance. La valeur de cette propriété est une référence à la fonction elle-même, ce n'est pas une chaîne de caractères représentant le nom de la fonction. Cette valeur est en lecture seule pour les valeurs de types primitifs comme 1
, true
et "test"
.
Description
Tous les objets héritent d'une propriété constructor
de leur prototype :
var o = {}; o.constructor === Object; // true var a = []; a.constructor === Array; // true var n = new Number(3) n.constructor === Number; // true
Exemples
Afficher le constructeur d'un objet
L'exemple ci-dessous crée un prototype Arbre
, et un objet de ce type, monArbre
. Le script affiche ensuite la propriété constructor
de l'objet monArbre
:
function Arbre(nom) { this.nom = nom; } var monArbre = new Arbre("Sequoia"); console.log( "monArbre.constructor vaut " + monArbre.constructor );
Cet exemple produira le résultat suivant :
monArbre.constructor vaut function Arbre(nom) { this.nom = nom; }
Modifier le constructeur d'un objet
Dans l'exemple suivant, on illustre comment modifier la valeur d'un constructeur pour les objets génériques. Dans l'exemple suivant, seules les valeurs true
, 1
et "test"
ne seront pas affectées car leurs constructeurs sont en lecture seule uniquement. Cet exemple montre qu'il ne faut pas se reposer de façon aveugle sur la propriété constructor
d'un objet.
function Type () {} var types = [ new Array(), [], new Boolean(), true, // restera tel quel new Date(), new Error(), new Function(), function () {}, Math, new Number(), 1, // restera tel quel new Object(), {}, new RegExp(), /(?:)/, new String(), 'test' // restera tel quel ]; for (var i = 0; i < types.length; i++) { types[i].constructor = Type; types[i] = [types[i].constructor, types[i] instanceof Type, types[i].toString()]; } console.log(types.join('\n'));
L'exemple produira le résultat suivant :
function Type() {},false, function Type() {},false, function Type() {},false,false function Boolean() { [native code] },false,true function Type() {},false,Mon Sep 01 2014 16:03:49 GMT+0600 function Type() {},false,Error function Type() {},false,function anonymous() { } function Type() {},false,function () {} function Type() {},false,[object Math] function Type() {},false,0 function Number() { [native code] },false,1 function Type() {},false,[object Object] function Type() {},false,[object Object] function Type() {},false,/(?:)/ function Type() {},false,/(?:)/ function Type() {},false, function String() { [native code] },false,test
Spécifications
Spécification | Statut | Commentaires |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Définition initiale. Implémentée avec JavaScript 1.1. |
ECMAScript 5.1 (ECMA-262) La définition de 'Object.prototype.constructor' dans cette spécification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Object.prototype.constructor' dans cette spécification. |
Standard | |
ECMAScript 2016 Draft (7th Edition, ECMA-262) La définition de 'Object.prototype.constructor' 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) |