我可以新增一個字串屬性嗎?
重要性: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
沒有屬性的痕跡。
這個範例清楚地顯示原始資料型態不是物件。
他們無法儲存額外資料。