Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

TypeError: "x" is not a constructor

Message

TypeError: "x" is not a constructor

TypeError: Math is not a constructor
TypeError: JSON is not a constructor
TypeError: Symbol is not a constructor
TypeError: Reflect is not a constructor
TypeError: Intl is not a constructor
TypeError: SIMD is not a constructor
TypeError: Atomics is not a constructor

Type d'erreur

TypeError

Quel est le problème ?

Une variable ou un objet a été utilisé comme un constructeur alors que cet objet ou cette variable n'est pas un constructeur. Pour plus d'informations sur les constructeurs, voir la page sur l'opérateur new.

De nombreux objets globaux tels que String ou Array, sont constructibles avec new. Cependant, d'autres objets globaux ne le sont pas (leurs propriétés et méthodes sont statiques). Les objets standards natifs suivants ne sont pas des constructeur : Math, JSON, Symbol, Reflect, Intl, SIMD, Atomics.

Les fonctions génératrices ne peuvent pas non plus être utilisées comme des constructeurs.

Exemples

Exemples invalides

var Voiture = 1;
new Voiture();
// TypeError: Voiture is not a constructor

new Math();
// TypeError: Math is not a constructor

new Symbol();
// TypeError: Symbol is not a constructor

function* f() {};
var obj = new f;
// TypeError: f is not a constructor

Créer un constructeur voiture

Imaginons qu'on veuille représenter des voitures sous forme d'objets. On appellera ce type voiture et on lui ajoutera des propriétés pour le fabricant, le modèle et l'année. Pour cela, on pourra écrire la fonction suivante :

function Voiture(fabriquant, modèle, année) {
  this.fabriquant = fabriquant;
  this.modèle = modèle;
  this.année = année;
}

On peut désormais créer un objet maVoiture comme ceci :

var maVoiture = new Voiture("Renault", "Twingo", 2006);

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,