ru.javascript.info icon indicating copy to clipboard operation
ru.javascript.info copied to clipboard

Вопрос по задаче

Open Akim-boyarin opened this issue 4 years ago • 0 comments

Здравствуйте! Возник вопрос по задаче в данной главе: https://learn.javascript.ru/primitives-methods

Сама задача:

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

str.test = 5; 

alert(str.test);

"Как вы думаете, это сработает? Что выведется на экран?"

Запустив код в консолях Chrome и Mozilla в строгом режиме, я увидел следующее: => TypeError: Cannot create property 'test' on string 'Привет'

В самой главе написано: "Получается, что примитивы могут предоставлять методы, и в то же время оставаться «лёгкими».

Движок JavaScript сильно оптимизирует этот процесс. Он даже может пропустить создание специального объекта. Однако, он всё же должен придерживаться спецификаций и работать так, как будто он его создаёт."

Я это понял так: оптимизация позволяет не создавать объект при вызове на строке str.test = 5; , в нестрогом режиме это работает, а строгий ругается. Но в главе написано: "В момент обращения к свойству str создаётся «объект-обёртка». В строгом режиме, попытка изменения этого объекта выдаёт ошибку."

Проясните пожалуйста этот момент.

Akim-boyarin avatar Feb 03 '21 06:02 Akim-boyarin