Alındığı MDN'yi
Dize değişmezleri (çift veya tek tırnak ile gösterilir) ve yapıcı olmayan bir bağlamda (yani, new anahtar sözcüğü kullanılmadan) String çağrılarından döndürülen dizeler ilkel dizelerdir. JavaScript, ilkelleri otomatik olarak String nesnelerine dönüştürür, böylece ilkel dizeler için String nesnesi yöntemlerini kullanmak mümkündür. Bir yöntemin ilkel bir dizede çağrılacağı veya özellik aramasının gerçekleştiği bağlamlarda, JavaScript otomatik olarak dizeyi ilkel olarak sarar ve yöntemi çağırır veya özellik araması gerçekleştirir.
Bu nedenle, dizge ilkelleri üzerindeki işlemlerin (yöntem çağrılarının) dize Nesneleri üzerindeki işlemlerden daha yavaş olması gerektiğini düşündüm çünkü herhangi bir ilkel dize method
, dizeye uygulanmadan önce dizge Nesnesine (ekstra iş) dönüştürülür .
Ancak bu test durumunda sonuç tam tersidir. Kod bloğu-1 daha hızlı çalışır kod bloğu-2 , hem kod blokları aşağıda verilmiştir:
kod bloğu-1:
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
kod bloğu-2:
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
Sonuçlar tarayıcılarda değişiklik gösterir ancak kod bloğu-1 her zaman daha hızlıdır. Biri bunu açıklayabilir mi, neden blok-1 kod bloğu-2'den daha hızlıdır .
'0123456789'.charAt(i)
?
code block-1
daha hızlı diye soruyorum ?
new String
, başka bir şeffaf Nesne sarma katmanı sunar .typeof new String(); //"object"