Когда JS создает обертку объекта для строки? - PullRequest
0 голосов
/ 13 ноября 2018

Symbol.iterator в 'retularString' // ошибка в правой части in может быть объектом

Symbol.iterator в новой String () // true

Имеет ли этоозначает, что JS создает объектные оболочки для строк только , когда он вызывает методы / или обращается к соответствующим свойствам на них, например 'string'.toUppercase() / 'string'.length?

1 Ответ

0 голосов
/ 13 ноября 2018

Означает ли это, что JS создает объектные оболочки для строк только , когда он вызывает методы / или обращается к соответствующим свойствам для них, например 'string'.toUppercase() / 'string'.length?

Да.

Когда у вас есть строка, объявленная как var foo = 'foo', ее тип является примитивом string, не имеющим свойств по своей природе, но когда вы пытаетесь получить доступ к свойству, примитив мгновенно переносится в объект String через процесс под названием неявное принуждение .

См. в этой статье для полного объяснения принуждения в JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...