Maison > Article > interface Web > Introduction à l'encapsulation d'objets primitifs dans les compétences JavaScript_javascript
En JavaScript, les chaînes, les nombres et les booléens sont tous des types primitifs, c'est-à-dire que les chaînes, les nombres et les valeurs booléennes n'existent pas sous forme d'objets. Cependant, étant donné que ces trois types primitifs de valeurs doivent être exploités, JavaScript encapsulera automatiquement ces trois types de valeurs et en fera des objets avec des propriétés et des méthodes. En prenant la chaîne comme exemple, ce processus d'encapsulation est le suivant :
1. Lorsque JavaScript rencontre un accès à un attribut ou une invocation de méthode d'une valeur de chaîne, il appellera une nouvelle chaîne (valeur de chaîne) pour encapsuler automatiquement la chaîne dans un objet String.
2. JavaScript accédera aux propriétés ou méthodes de cet objet nouvellement créé et renverra les résultats correspondants.
3. Une fois l'accès à l'attribut ou l'appel de méthode terminé, JavaScript détruira immédiatement l'objet nouvellement créé.
En prenant le code suivant comme exemple, cela n'a aucun sens d'écrire des propriétés dans un objet String créé automatiquement par JavaScript, car l'objet créé n'existe plus une fois l'instruction d'écriture terminée :
Il convient de noter que la variable s dans le code ci-dessus représente toujours une chaîne primitive. L'objet chaîne créé automatiquement par JavaScript existe dans le processus d'exécution de l'opération s.length ou s.newVariable. Cela peut être vérifié à partir de la dernière ligne de code de l'expérience ci-dessus.
En plus d'encapsuler automatiquement les valeurs primitives, les développeurs peuvent également choisir d'effectuer le processus correspondant manuellement. Contrairement à l'encapsulation automatique, l'objet obtenu par encapsulation manuelle ne sera pas détruit immédiatement, donc l'opération d'écriture de propriété effectuée pour l'objet encapsulé manuellement est significative :
console.log(t == "test");//true
console.log(t === "test");//false