Un concepto que me he encontrado recientamente es la inmutabilidad. Un objeto inmutable es aquel que no puede modificarse una vez creado. Aunque parezca que tenemos el control completo de nuestras variables para darles un valor concreto, solamente usando el operador de asignación (el “=”), esto no es del todo cierto. Anteriormente explicamos que el operador “=” de asignación referenciaba a otra variable y los cambios en una afectaban a la otra y viceversa. Igual no es lo mismo que copiar y existía una dependencia. Asignación y resignación con Javascript. “Igual” es muy complicado. Para ver un ejemplo de esta inmutabilidad vamos a estudiar el objeto Javascript Strings. Lo primero que hay que tener en cuenta es que String, aunque estemos muy acostumbrados a él, es un objeto, a diferencia de un tipo de dato número, un array o un carácter. De alguna manera se podría considerar que el tipo String es un Array de caracteres y no estaríamos mal encaminados. Pero si accedemos a las funciones creadas para el tipo String, no encontraremos ninguna que nos ofrezca una modificación de la misma a través de los índices de este array. ¿Que quiere decir esto? Si quiero leer un carácter accediendo al índice de este String puedo hacerlo pero no modificarlo. Lo vemos en el siguiente ejemplo.


str='INMUTABLE';

console.log(str[2]); /*Aparece la letra M que es la letra asociada a esta posición o índice*/

str[3]=P;

console.log(str[3]); /*Aparece la letra M otra vez*/

Esto es así para evitar una serie de problemas, en este caso para mantener la consistencia y tamaño de las cadenas cuando son manipuladas. Si quisieramos sustituir un carácter dentro de una cadena por otro, deberemos crear una función dentro de nuestro script asociada al objeto String.


String.prototype.replaceAt=function(index, character) {
return this.substr(0, index) + character + this.substr(index+character.length);
}

str='INMUTABLE';

str= str.replaceAt(3,'P');

console.log(str); /*Ahora obtenemos la palabra 'INPUTABLE'*/

Esta función lo único que hace es crear una subcadena hasta la posición del carácter a introducir, Introducimos el carácter a sustituir y se escribe el resto de cadena hasta el final. Ahí dejo esta pequeña ayuda, por si alguien la necesita.