Обращения к примитивам string как к обьектам получается засоряют память создавая множество обьектов-оберток String?
Вот такой вот вопрос возник ?♂️
var s = "test"
for (let i = 0; i < s.length; i++) {
s.coronovirus = true // обращаемся как к обьекту -> создается обертка
console.log(s.charAt(i) + " " + s.coronovirus) // s.coronovirus будет false, т.е. обертка создается для каждого обращения и сразу уничтожается
}
Не проблема ли это? Сильно влияет на производительность создание кучи одноразовых обьектов? Только начал изучать JavaScript, впечатлило это
Ответы (1 шт):
Да, примитивы работают быстрее, объекты - медленее, но не намного. Смотрите подробнее здесь. Статья, конечно, устарела, но она наглядно показывает, что производительность падает. На момент написания статьи разница была высокой, но в современных браузерах разница уже очень маленькая. Запустите тесты из статьи и посмотрите сами. Критично ли это - зависит от ситуации. Вообще как часто вы пользуетесь огромными массивами текстовых данных в JavaScript? Почти никогда. В JavaScript есть вещи гораздо более критичные по отношению к производительности (например работа с DOM). Так что работа со строками почти всегда не самое узкое место в обычном web-приложении.