HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
View in English Always switch to English
TypeError: Object doesn't support this action (Edge) 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
TypeError
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.
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.
String
Array
Math
JSON
Symbol
Reflect
Intl
SIMD
Atomics
Les fonctions génératrices ne peuvent pas non plus être utilisées comme des constructeurs.
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
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 :
maVoiture
var maVoiture = new Voiture("Renault", "Twingo", 2006);
Lorsqu'on renvoie une promesse immédiatement tenue ou rompue, il n'est pas nécessaire d'utiliser new Promise() pour la manipuler. Il faut plutôt utiliser les méthodes statiques Promise.resolve() ou Promise.reject() :
new Promise()
Promise.resolve()
Promise.reject()
// Dans ce cas on aura une exception // "this is not a constructor" return new Promise.resolve(true);
// Cette formulation fonctionne mais // est inutilement longue return new Promise((resolve, reject) => { resolve(true); }); // On pourra autrement utiliser les // méthodes statiques return Promise.resolve(true); return Promise.reject(false);