Diambil dari MDN
String literal (dilambangkan dengan tanda kutip ganda atau tunggal) dan string yang dikembalikan dari panggilan String dalam konteks non-konstruktor (yaitu, tanpa menggunakan kata kunci baru) adalah string primitif. JavaScript secara otomatis mengonversi objek primitif menjadi String, sehingga memungkinkan untuk menggunakan metode objek String untuk string primitif. Dalam konteks di mana metode akan dipanggil pada string primitif atau terjadi pencarian properti, JavaScript akan secara otomatis menggabungkan string primitif dan memanggil metode atau melakukan pencarian properti.
Jadi, saya pikir (secara logis) operasi (panggilan metode) pada primitif string harus lebih lambat daripada operasi pada Objek string karena string primitif apa pun diubah ke Objek string (kerja ekstra) sebelum method
diterapkan pada string.
Namun dalam kasus uji ini , hasilnya justru sebaliknya. The blok kode-1 berjalan lebih cepat dari kode blok-2 , kedua blok kode yang diberikan di bawah:
blok kode-1:
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
blok kode-2:
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
Hasil bervariasi di browser tetapi blok kode-1 selalu lebih cepat. Adakah yang bisa menjelaskan ini, mengapa kode blok-1 lebih cepat daripada kode blok-2 .
'0123456789'.charAt(i)
?
code block-1
lebih cepat?
new String
memperkenalkan lapisan transparan lain dari pembungkus Objek .typeof new String(); //"object"