var str = 'Hello world';С таким:
var str = new String('Hello world');
Но на самом деле, — это даёт разные результаты. Если под рукой есть Firebug, — проверьте и убедитесь сами. А тут я хочу подметить по теме о присваивании метода к строке или числу, дальше думаю сами всё поймёте:var str = 'Hello world';
str.mthd = 123;
str; //Hello world
str.mthd; //undefined
var str2 = new String('Hello world');
str2.mthd = 123;
str2; //Hello world или объект String в отладчике {mthd: 123, 0: 'Hello world'}
str2.mthd; //123
Аналогично с new Number(), экспериментируйте!И на закуску:
(new String('Hello world') === 'Hello world') //false
(new String('Hello world') == 'Hello world') //true
Спасибо некоему AbS_!Внимание! Подводные камни!
Впоследствии практическим путём я наткнулся на подводные камни! В частности, когда я захотел вернуть в Node.JS ответ HTTP-сервера на запрос объектом строки:require('http').createServer(function (req, res) {
var str = new String('ok');
res.end(str);
}).listen(8000);
При обращении к http://127.0.0.1:8000 процесс ноды обваливался с ошибкой:TypeError: first argument must be a string or BufferЧтобы обойти проблему, — нужно дописывать к выводу строки вызов метода .toString(), — дабы преобразовать объект в обыкновенную строку, из строки-объекта:
res.end(str.toString());Штука тут в следующем:
typeof new String('check') //returns 'object'
typeof 'check' //returns 'string'
Так что, коли решились использовать строку как объект, будьте бдительны и осторожны!