Tiré de MDN
Les chaînes littérales (désignées par des guillemets doubles ou simples) et les chaînes renvoyées par les appels String dans un contexte non constructeur (c'est-à-dire sans utiliser le nouveau mot clé) sont des chaînes primitives. JavaScript convertit automatiquement les primitives en objets String, de sorte qu'il est possible d'utiliser des méthodes d'objet String pour les chaînes primitives. Dans les contextes où une méthode doit être appelée sur une chaîne primitive ou une recherche de propriété se produit, JavaScript encapsule automatiquement la chaîne primitive et appelle la méthode ou effectue la recherche de propriété.
Donc, j'ai pensé (logiquement) que les opérations (appels de méthode) sur les primitives de chaîne devraient être plus lentes que les opérations sur les objets de chaîne car toute primitive de chaîne est convertie en objet de chaîne (travail supplémentaire) avant d' method
être appliquée sur la chaîne.
Mais dans ce cas de test , le résultat est opposé. Le bloc de code-1 s'exécute plus rapidement que le bloc de code-2 , les deux blocs de code sont donnés ci-dessous:
bloc de code-1:
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
bloc de code-2:
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
Les résultats varient selon les navigateurs mais le code block-1 est toujours plus rapide. Quelqu'un peut-il expliquer ceci, pourquoi le bloc de code 1 est plus rapide que le bloc de code 2 .
'0123456789'.charAt(i)
?
code block-1
est plus rapide?
new String
introduit une autre couche transparente d' habillage d' objets .typeof new String(); //"object"