返回課程

我可以新增一個字串屬性嗎?

重要性: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 沒有屬性的痕跡。

這個範例清楚地顯示原始資料型態不是物件。

他們無法儲存額外資料。