Спробуйте запустити:
let str = "Привіт";
str.test = 5; // (*)
alert(str.test); В залежності від того, втановлений у вас use strict чи ні, результати будуть наступними:
undefined(без строгого режиму)- Помилка (строгий режим)
Чому? Давайте повторимо те, що відбувається в рядку, який позначено (*):
- Коли ми намагаємося отримати доступ до
str, створюється "об'єкт обгортка". - В строгому режимі, спроба запису викличе помилку.
- В іншому випадку операція здійсниться і об'єкт отримає властивість
test, але після цього "об'єкт обгортка" зникне.
Отже, якщо код виконується не в строгому режимі, на останньому рядку str не матиме властивості test.
Цей приклад чітко показує, що примітиви не є об'єктами.
Вони не можуть зберігати додаткові данні.