से लिया MDN
स्ट्रिंग शाब्दिक (डबल या सिंगल कोट्स द्वारा चिह्नित) और स्ट्रिंग एक गैर-कंस्ट्रक्टर संदर्भ में स्ट्रिंग कॉल से लौटे (यानी, नए कीवर्ड का उपयोग किए बिना) आदिम तार हैं। जावास्क्रिप्ट स्वचालित रूप से स्ट्रिंग वस्तुओं के लिए प्राइमेटिव्स को रूपांतरित करता है, ताकि आदिम स्ट्रिंग्स के लिए स्ट्रिंग ऑब्जेक्ट विधियों का उपयोग करना संभव हो। संदर्भों में जहां एक विधि को एक आदिम स्ट्रिंग पर लागू किया जाना है या एक संपत्ति लुकअप होता है, जावास्क्रिप्ट स्वचालित रूप से स्ट्रिंग आदिम लपेटेगा और विधि को कॉल करेगा या संपत्ति की खोज करेगा।
इसलिए, मैंने सोचा है कि (प्राथमिक रूप से) स्ट्रिंग प्राइमिटिव पर ऑपरेशंस (मेथड कॉल) स्ट्रिंग ऑब्जेक्ट्स पर होने वाले ऑपरेशनों की तुलना में धीमी होनी चाहिए क्योंकि स्ट्रिंग method
पर लागू होने से पहले कोई भी स्ट्रिंग आदिम स्ट्रिंग ऑब्जेक्ट (अतिरिक्त काम) में परिवर्तित हो जाती है ।
लेकिन इस परीक्षण के मामले में , परिणाम विपरीत है। कोड ब्लॉक -1 रन से अधिक तेजी से कोड ब्लॉक -2 , दोनों कोड ब्लॉक नीचे दिए गए हैं:
कोड ब्लॉक -1:
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
कोड ब्लॉक -2:
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
परिणाम ब्राउज़र में भिन्न होते हैं लेकिन कोड ब्लॉक -1 हमेशा तेज होता है। किसी को भी इस बारे में समझाएं कर सकते हैं, यही कारण है कि कोड ब्लॉक -1 से अधिक तेजी से है कोड ब्लॉक -2 ।
'0123456789'.charAt(i)
?
code block-1
तेज क्यों है?
new String
की एक और पारदर्शी परत का उपयोग करना ।typeof new String(); //"object"