Как отличить примитивное значение от объекта в JavaScript

Как известно, в JavaScript существуют примитивные типы, такие как число, строка или булев, и для них имеются соответствующие им объекты типа Number, String, Boolean, у которых есть методы для работы с этими типами, например, методы обработки строк… Если вы попытаетесь применить функцию к примитивному типу, например:

то в данном случае когда к обычной строке str мы применяем метод split, то JavaScript находит подходящий тип объекта, в данном случае это String, создает новый объект с помощью new String («How are you doing today?»); и применяет к нему функцию split.

При этом часто возникает проблема при сравнении двух значений, потому что str === new String (str) выдаст false. Также, если, к примеру, строка » в условии выдаст false, то new String (»)  уже выдаст true. К счастью, так же, как JavaScript автоматически создает объект из примитива, он способен и на обратное. Если мы вызовем конструктор для объекта, замещающего соответствующий примитивный тип, и передадим ему сам объект, то получим значение изначального примитивного типа.

То есть,

выдаст true, поскольку левая часть выражения возвращает обычную строку.

Это свойство конструктора можно использовать для гарантированного получения примитивных типов с помощью подобной функции:

Не важно, что будет на входе этой функции, примитивное значение или объект, на выходе мы всегда получим примитив.

Например,

Поделиться: Share on LinkedIn
Linkedin
Share on VK
VK
Share on Facebook
Facebook
0Tweet about this on Twitter
Twitter

Оставить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Яндекс.Метрика