Im Hinblick auf Dein "codiertes PS" wirst Du wohl mit "Wald-Schall-Hall-Prinzip" leben müssen.
Oder glaubst Du, dass es mir nicht aufgefallen ist dass Du von "Code verkaufen" schreibst und weiter davon, dass Du der letzte seist, der den Deinen zu Gesicht bekäme, - nachdem ich davon schrieb, dass ich die auf Grund Deiner Fragestellung gewonnenen "technischen Erkenntnisse" verkaufen könne?
In dieser Situation bist Du nicht derjenige, der sich darüber echauffieren dürfte, dass man ihm das Notieren von "Unsinn" bescheinigt.
Aber kommen wir zu "was ist besser". Ein Unterscheidungsmerkmal könnte die Performance sein.
Vorstellbar wäre, dass das mehrfache Anwenden von Methoden auf ein Objekt String (ohne dessen Inhalt zu verändern!) leicht performanter ist als etwas vom Datentyp String herzunehmen und es immer wieder neu in ein Objekt wrappen zu lassen.
Also. Dieser Test benutzt mehrfach die Eigenschaft length und die Methode replace (was konkret gemacht ist allerdings nicht sinnvoll):
var s = new String('Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu');
var o = new String(s);
var tStart;
var tEnd;
console.log ('String: length ist ' + s.length );
tStart = new Date().getTime();
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < s.length; p++ ) {
let a = s.replace( s[p], ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit String: ' + String( tEnd-tStart ) + ' Millsekunden.');
console.log ('Objekt: length ist ' + o.length );
tStart = new Date().getTime();
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < o.length; p++ ) {
let a = o.replace( o[p], ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit Objekt: ' + String( tEnd-tStart ) + ' Millsekunden.');
In den meisten meiner Tests (zu rund 80%, übrigen mit sehr volatilen Laufzeiten) war hier die Bearbeitung des primitiven Strings rund 10% schneller.
Das kann aber an Optimierungen des Interpreters (hier: Node.js unter Linux) liegen.