Documentación offline JavaScript main

TypeError: can't assign to property "x" on "y": not an object

main Documentación oficial Licencia CC-BY-SA-2.5Descargado el 2026-08-02

En esta página

The JavaScript strict mode exception "can't assign to property" occurs when attempting to create a property on primitive value such as a symbol, a string, a number or a boolean. Primitive values cannot hold any property.

Message#

TypeError: Cannot create property 'x' on number '1' (V8-based)
TypeError: can't assign to property "x" on 1: not an object (Firefox)
TypeError: Attempted to assign to readonly property. (Safari)

Error type#

{{jsxref("TypeError")}}.

What went wrong?#

In strict mode, a {{jsxref("TypeError")}} is raised when attempting to create a property on primitive value such as a symbol, a string, a number or a boolean. Primitive values cannot hold any property.

The problem might be that an unexpected value is flowing at an unexpected place, or that an object variant of a {{jsxref("String")}} or a {{jsxref("Number")}} is expected.

Examples#

Invalid cases#

```js example-bad "use strict";

const 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

### Fixing the issue

Either fix the code to prevent the [primitive](/en-US/docs/Glossary/Primitive) from being used in such places, or fix the issue by creating the object equivalent {{jsxref("Object")}}.

```js example-good
"use strict";

const foo = new String("my string");
foo.bar = {};

See also#