我可以添加一个字符串属性吗?
重要性:5
考虑以下代码
let str = "Hello";
str.test = 5;
alert(str.test);
您认为它会运行吗?会显示什么?
尝试运行它
let str = "Hello";
str.test = 5; // (*)
alert(str.test);
根据您是否使用 use strict
,结果可能是
undefined
(非严格模式)- 错误(严格模式)。
为什么?让我们重放 (*)
行发生的事情
- 当访问
str
的属性时,会创建一个“包装对象”。 - 在严格模式下,向其写入数据会引发错误。
- 否则,属性操作会继续进行,对象会获得
test
属性,但之后“包装对象”会消失,因此在最后一行str
不会留下任何属性的痕迹。
这个例子清楚地表明,原始值不是对象。
它们无法存储额外的數據。