Как "instanceof" примитивная строка (строковый литерал) в JavaScript

В JavaScript я могу объявить строку следующими способами;

var a = "Hello World";
var b = new String("Hello World");

но это не экземпляр String...

console.log(a instanceof String); //false;
console.log(b instanceof String); //true;

Так как вы находите тип или "instanceof"строковый литерал?

Может ли JavaScript быть вынужден создать new String() для каждого строкового литерала?

3 ответа

Решение

Использование typeof "foo" === "string" вместо instanceof.

Использование typeof вместо этого и просто сравните полученную строку. Смотрите документы для деталей.

Там нет необходимости писать new String() создать новую строку. Когда мы пишем var x = 'test'; заявление, оно создает x как строка из примитивного типа данных. Мы не можем прикрепить пользовательские свойства к этому x как мы делаем с литералом объекта. то есть. x.custom = 'abc';x.custom даст неопределенное значение. Таким образом, в соответствии с нашей потребностью нам нужно создать объект. new String() создаст объект с typeof() Объект, а не строка. Мы можем добавить пользовательские свойства для этого объекта.

Другие вопросы по тегам