Skip to content

Latest commit

 

History

History
31 lines (18 loc) · 1.6 KB

File metadata and controls

31 lines (18 loc) · 1.6 KB

Спробуйте запустити:

let str = "Привіт";

str.test = 5; // (*)

alert(str.test); 

Ви можете отримати два результати:

  1. undefined
  2. помилку.

Чому? Давайте повторимо те, що відбувається в рядку (*):

  1. Коли ми намагаємося отримати доступ до str, створюється "об'єкт обгортка".
  2. Операція з властивістю здійснюється в ній. Отже, об'єкт отримує властивість test.
  3. Операція закінчується, і "об'єкт обгортка" зникає.

Отже, на останньому рядку str не має властивості. Для кожної операції створюється новий об'єкт обгортка.

Деякі браузери можуть вирішити додатково обмежити програміста і взагалі заборонити присвоювати властивості примітивам. Тому на практиці ми можемо бачити помилки в рядку (*). Але це трохи відрізняється від специфікації.

Цей приклад чітко показує, що примітиви не є об'єктами.

Вони просто не можуть зберігати дані.

Всі операції з властивостями/методами виконуються за допомогою тимчасових об'єктів.