Spec-Zone.ru › JavaScript

TypeError: нельзя присвоить свойство "x" объекту "y": не является объектом

Исключение JavaScript в строгом режиме "нельзя присвоить свойство" возникает при попытке создать свойство на примитивном значении, таком как символ, строка, число или логическое значение. Примитивные значения не могут содержать никаких свойств.

Сообщение

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)

Тип ошибки

TypeError.

Что пошло не так?

В строгом режиме TypeError выбрасывается при попытке создать свойство на примитивном значении, таком как символ, строка, число или логическое значение. Примитивные значения не могут содержать никаких свойств.

Проблема может заключаться в том, что неожиданное значение поступает в неожиданное место, или ожидается объектный вариант String или Number.

Примеры

Некорректные случаи

"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

Исправление проблемы

Либо исправьте код, чтобы предотвратить использование примитивного значения в таких местах, либо исправьте проблему, создав эквивалентный объект Object.

"use strict";

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

См. также

  • Строгий режим
  • Примитив

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_assign_to_property

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API