Dans JavaScript, String, Number et Boolean sont tous des types de base primitifs, c'est-à-dire que les chaînes, les valeurs numériques et les valeurs booléennes n'existent pas sous la forme d'objets. Cependant, comme ces trois types primitifs doivent être exploités, JavaScript encapsule automatiquement ces trois types de valeurs afin qu'ils aient des propriétés et des méthodes comme objets. Prenant l'exemple de la chaîne, ce processus d'encapsulation est le suivant:
1.
2. JavaScript accédera aux propriétés ou méthodes de l'objet nouvellement créé et renverra le résultat correspondant.
3. Une fois l'accès à la propriété ou l'appel de méthode terminé, JavaScript détruira immédiatement l'objet nouvellement créé.
À titre d'exemple, il n'a pas de sens d'écrire des attributs aux objets de chaîne créés automatiquement par JavaScript, car l'objet créé n'existe plus une fois l'instruction d'écriture terminée:
La copie de code est la suivante:
var s = "test";
S.Length = 9;
console.log (s.length); // toujours 4
S.NewVariable = 9;
console.log (s.newvariable); // non défini
console.log (s === "test"); // true
Il convient de noter que la variable S dans le code ci-dessus représente toujours une chaîne primitive. L'objet String a automatiquement créé par JavaScript lors de l'exécution des opérations S.Length ou S.NewVariable. Cela peut être vérifié à partir de la dernière ligne de code dans l'expérience ci-dessus.
En plus de résumer automatiquement les valeurs primitives, les développeurs peuvent également choisir d'effectuer manuellement le processus correspondant. Contrairement à l'encapsulation automatique, les objets résultants obtenus par encapsulation manuelle ne sont pas immédiatement détruits, de sorte que les opérations d'écriture de propriété prises pour les objets encapsulées manuellement ont un sens:
La copie de code est la suivante:
var t = new String ("test");
T.Length = 9;
console.log (t.length); // toujours 4, comme l'attribut de longueur est lu seulement
t.newvariable = 9;
console.log (t.newvariable); // 9
console.log (t == "test"); // true
console.log (t === "test"); // false