TypeError: 无法为“y”上的“x”属性赋值:不是对象

严格模式 中,当尝试在诸如 符号字符串数字布尔值 这样的 原始值 上创建属性时,会引发 TypeError原始值 不能保存任何 属性

信息

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原始值 不能保存任何 属性

问题可能是意外的值流向了意外的地方,或者需要 StringNumber 的对象变体。

示例

无效情况

js
"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 来修复问题。

js
"use strict";

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

另请参阅