Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

используйте typeof "foo" === "string" вместо instanceof.

Ответ 2

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

Ответ 3

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