JavaScript

Вопрос про объекты

Читал что строки в JS не объекты согласно книге Фленагана, а обращение к методам строки просто создает обертку объект. Но у авторов курсов и лекций слышал, что в js все объекты. Кому блин верить ??
По факту, для программиста в JavaScript нет разницы между значением примитивного типа и объектом: ты можешь для всего, кроме null и undefined, вызвать метод. Или, например, написать 3.25.field = 'string', создавая поле field у числа 3.25 - абсолютно корректная, хотя и бессмысленная конструкция.

Для того, чтобы различить разные виды значений, в JavaScript есть операция typeof, которая для строки вернёт 'string', а для "классического" объекта - 'object'. Но (внимание, грабли!!!), для значения null (которое не является объектом) typeof тоже вернёт 'object'.

В Java есть отдельно примитивные типы, для которых невозможно вызывать методы, и есть классы, являющиеся обёртками для этих типов (каждый примитивный тип имеет парный ему класс). И ты точно знаешь, когда работаешь с примитивным значением, а когда с объектом. Но в JavaScript всё свалено в одну кучу: интерпретатор JS сам решает, когда использовать примитивный тип, а когда объект.
Алексей Васенков
Алексей Васенков
80 406
Лучший ответ
Всё -- объекты.
Ринат ...)))
Ринат ...)))
74 716
Строки в JS (а также числа, булевые значения, и т‎.д.) - это примитивы, не объекты. В данном случае, книга не врет.
Верь спецификации языка, а не левым источникам. Книги тоже иногда содержат ошибки, что уж говорить о всяких курсиках...
в javascript есть Стандартные встроенные объекты
string входит в этот состав
В книге Фалангана всё верно написано. Сами строки не являются объектами но если строку создать с помощью new String(); тогда он будет объектом и когда ты используешь обычную строку с каким то методом например str.toLowerCase(); то строка превращается в объект и после этого срабатывает метод так как методы работают с объектами но в итоге возвращается не объект а преобразованная строка.