এমডিএন থেকে নেওয়া
স্ট্রিং লিটারাল (ডাবল বা একক উদ্ধৃতি দ্বারা চিহ্নিত) এবং স্ট্রিং কলগুলি থেকে একটি অ-কনস্ট্রাক্টর প্রসঙ্গে (যেমন, নতুন কীওয়ার্ড ব্যবহার না করে) স্ট্রিংগুলি আদিম স্ট্রিং। জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে আদিমকে স্ট্রিং অবজেক্টে রূপান্তরিত করে, যাতে আদিম স্ট্রিংয়ের জন্য স্ট্রিং অবজেক্ট পদ্ধতি ব্যবহার করা সম্ভব। প্রাসঙ্গিক ক্ষেত্রে যেখানে কোনও পদ্ধতিটি আদিম স্ট্রিংয়ের সাথে যুক্ত করা যেতে পারে বা কোনও সম্পত্তি অনুসন্ধান দেখা যায়, জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে স্ট্রিংটিকে আদিম लपेटবে এবং পদ্ধতিটি কল করবে বা সম্পত্তি অনুসন্ধান করবে।
সুতরাং, আমি ভেবেছিলাম স্ট্রিং অবজেক্টগুলিতে স্ট্রিং আদিমগুলিতে অপারেশনগুলি (পদ্ধতি কল) ধীর হওয়া উচিত কারণ কোনও স্ট্রিং আদিম স্ট্রিংয়ের method
উপর প্রয়োগ হওয়ার আগে স্ট্রিং অবজেক্টে (অতিরিক্ত কাজ) রূপান্তরিত হয় ।
তবে এই পরীক্ষার ক্ষেত্রে ফলাফলটি বিপরীত। কোড ব্লক-1 রানে যতো তাড়াতাড়ি কোড ব্লক-2 , উভয় কোড ব্লক নিচে দেওয়া হল:
কোড ব্লক -১:
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
কোড ব্লক -২:
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
ফলাফলগুলি ব্রাউজারগুলিতে পরিবর্তিত হয় তবে কোড ব্লক -১ সর্বদা দ্রুত হয়। যে কেউ দয়া করে এটি ব্যাখ্যা করতে পারেন, কোড ব্লক -১ কোড ব্লক -২ এর চেয়ে দ্রুত কেন ।
'0123456789'.charAt(i)
?
code block-1
দ্রুত?
new String
আরেকটি স্বচ্ছ স্তর পরিচয় করানো হয়েছে।typeof new String(); //"object"