En JavaScript, String, Number y Boolean son tipos básicos primitivos, es decir, las cadenas, los valores numéricos y los valores booleanos no existen en forma de objetos. Sin embargo, dado que estos tres tipos primitivos deben operarse, JavaScript encapsulará automáticamente estos tres tipos de valores para que tengan propiedades y métodos como objetos. Tomar la cadena como ejemplo, este proceso de encapsulación es el siguiente:
1. Cuando JavaScript encuentre el acceso a la propiedad o las llamadas de método a los valores de cadena, se llamará a una nueva cadena (valor de cadena) para encapsular automáticamente la cadena en un objeto String.
2. JavaScript accederá a las propiedades o métodos del objeto recién creado y devolverá el resultado correspondiente.
3. Después de completar la llamada de acceso o método de propiedad, JavaScript destruirá inmediatamente el objeto recién creado.
Como ejemplo, no tiene sentido escribir atributos a los objetos de cadena creados automáticamente por JavaScript, porque el objeto creado ya no existe después de que se termine la declaración de escritura:
La copia del código es la siguiente:
var s = "prueba";
s.length = 9;
console.log (s.length); // todavía 4
S.NewVariable = 9;
console.log (s.newvariable); // indefinido
console.log (S === "Test"); // Verdadero
Vale la pena señalar que la variable S en el código anterior siempre representa una cadena primitiva. El objeto de cadena creado automáticamente por JavaScript existe durante la ejecución de las operaciones S.Length o S.NewVariables. Esto se puede verificar desde la última línea de código en el experimento anterior.
Además de encapsular automáticamente los valores primitivos, los desarrolladores también pueden optar por realizar manualmente el proceso correspondiente. A diferencia de la encapsulación automática, los objetos resultantes obtenidos por encapsulación manual no se destruyen de inmediato, por lo que las operaciones de escritura de propiedades tomadas para objetos encapsulados manualmente tienen sentido:
La copia del código es la siguiente:
var t = nueva cadena ("prueba");
t.length = 9;
console.log (t.length); // todavía 4, como el atributo de longitud solo se lee
T.NewVariable = 9;
console.log (t.newvariable); // 9
console.log (t == "prueba"); // verdadero
console.log (t === "prueba"); // falso