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'Так что, коли решились использовать строку как объект, будьте бдительны и осторожны!