mozilla
Vos résultats de recherche

    Object.prototype.constructor

    Résumé

    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 1true 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 Abre(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
    Première édition d'ECMAScript. 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 6 (ECMA-262)
    La définition de 'Object.prototype.constructor' dans cette spécification.
    En cours de validation comme recommandation  

    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)

    Étiquettes et contributeurs liés au document

    Contributors to this page: junius_rendel, SphinxKnight, teoli
    Dernière mise à jour par : SphinxKnight,