--- title: 'TypeError: can''t assign to property "x" on "y": not an object' slug: Web/JavaScript/Reference/Errors/Cant_assign_to_property tags: - Error - Errors - JavaScript - TypeError translation_of: Web/JavaScript/Reference/Errors/Cant_assign_to_property ---
JavaScript の strict モードの例外 "can't assign to property" は、プリミティブ値、例えばシンボル、文字列、数値、論理値などにプロパティを作成しようとしたときに発生します。プリミティブ値はいかなるプロパティを持つこともできません。
TypeError: can't assign to property "x" on {y}: not an object (Firefox) TypeError: Cannot create property 'x' on {y} (Chrome)
{{jsxref("TypeError")}}
{{jsxref("Strict_mode", "Strict モード", "", 1)}}では、 {{jsxref("TypeError")}} はプリミティブ値、例えばシンボル、文字列、数値、論理値などにプロパティを作成しようとしたときに発生します。プリミティブ値はいかなるプロパティを持つこともできません。
想定外の場所に想定外の値が流れてきたり、 {{jsxref("String")}} や {{jsxref("Number")}} のオブジェクトバリアントが想定されていたりすることが問題となることがあります。
'use strict'; var foo = "my string"; // 次の行は strict モードでない場合は何もしません。 foo.bar = {}; // TypeError: can't assign to property "bar" on "my string": not an object
このような場所でプリミティブ値を使用しないようにコードを修正するか、 {{jsxref("Object")}} と同等のオブジェクトを生成して問題を修正するかします。
'use strict'; var foo = new String("my string"); foo.bar = {};