TypeError: can't assign to property "x" on "y": not an object
Message
TypeError: can't assign to property "x" on {y}: not an object (Firefox) TypeError: Cannot create property 'x' on {y} (Chrome)
Type d'erreur
Quel est le problème ?
En mode strict, une exception TypeError
est déclenchée lorsqu'on tente de créer une propriété sur une valeur primitive telle qu'un symbole, une chaîne de caractères, un nombre ou un booleén.
Le problème peut être lié à une valeur qui se trouve à un endroit inattendu ou qu'un équivalent objet d'une valeur primitive est attendu (ex. String
pour la chaîne de caractères ou Number
pour un nombre).
Exemples
Exemple invalide
js
"use strict";
var foo = "my string";
// The following line does nothing if not in strict mode.
foo.bar = {}; // TypeError: can't assign to property "bar" on "my string": not an object
Exemple valide
On pourra corriger le problème en convertissant la valeur primitive en sont équivalent objet avec un constructeur (ici String
pour .
js
"use strict";
var foo = new String("my string");
foo.bar = {};