A exceção do modo strict do Javascript "can't assign to property" ocorre quando é feita a tentativa de criar uma propriedade em um valor primitivo como um symbol, uma string, um number ou um boolean. Valores primitivos nâo podem ter nenhuma propriedade.
MensagemTypeError: can't assign to property "x" on {y}: not an object (Firefox)
TypeError: Cannot create property 'x' on {y} (Chrome)
Tipo de Erro
O que deu errado?
No Strict_mode
, um TypeError
é gerado quando é feita a tentativa de criar uma propriedade em um valor primitivo como um symbol, uma string, um number ou um boolean. Valores primitivos não podem ter nenhuma propriedade.
O problema pode ser que um valor inesperado está em um lugar inesperado, ou que uma variante de objeto de uma String
ou um Number
é esperado.
"use strict";
var foo = "minha string";
// A linha a seguir não faz nada se não estiver em modo strict.
foo.bar = {}; // TypeError: can't assign to property "bar" on "my string": not an object
Corrigindo o problema
Corrija o código para evitar que um primitivo seja usado em tais lugares, ou corrija o problema criando o objeto homólogo Object
.
"use strict";
var foo = new String("minha string");
foo.bar = {};
Veja também
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4