我可以添加一个字符串属性吗?
重要性: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
不会留下任何属性的痕迹。
这个例子清楚地表明,原始值不是对象。
它们无法存储额外的數據。