Javascript a-t-il une méthode pour remplacer une partie d'une chaîne sans créer une nouvelle chaîne?

var string = "This is a string"; var thing = str.replace("string","thing"); console.log( string ) >> "This is a string" console.log( thing ) >> "This is a thing" 

Existe-t-il une autre méthode que je peux utiliser, en plus de remplacer, qui modifiera la chaîne en place sans me donner un nouvel objet de chaîne?

Non, les chaînes JavaScript sont immuables.

Non pas que je sache, mais si la raison pour laquelle vous voulez faire cela est juste pour garder votre code propre, vous pouvez simplement attribuer la nouvelle chaîne à l'ancienne variable:

 var string = "This is a string"; string = string.replace("string", "thing"); 

Bien sûr, cela va simplement rendre le code un peu plus propre et créer encore un nouvel objet de chaîne.

Il y a une raison pour laquelle les chaînes sont immuables. Comme Javascript utilise la technique de l'appel par partage, une chaîne mutable serait un problème dans ce cas:

 function thinger(str) { return str.replace("string", "thing"); } var str = "This is a str"; var thing = thinger(str); 

Dans cette situation, vous souhaitez que votre chaîne soit passée en valeur, mais ce n'est pas le cas. Si str était mutable, Thinger changerait de str, ce serait un effet vraiment étrange.