返回课程

我可以添加一个字符串属性吗?

重要性:5

考虑以下代码

let str = "Hello";

str.test = 5;

alert(str.test);

您认为它会运行吗?会显示什么?

尝试运行它

let str = "Hello";

str.test = 5; // (*)

alert(str.test);

根据您是否使用 use strict,结果可能是

  1. undefined(非严格模式)
  2. 错误(严格模式)。

为什么?让我们重放 (*) 行发生的事情

  1. 当访问str的属性时,会创建一个“包装对象”。
  2. 在严格模式下,向其写入数据会引发错误。
  3. 否则,属性操作会继续进行,对象会获得test属性,但之后“包装对象”会消失,因此在最后一行str不会留下任何属性的痕迹。

这个例子清楚地表明,原始值不是对象。

它们无法存储额外的數據。