2010-05-29 20 views
12

Javascript'te, bir nesnenin bir özelliğine sahip olduğunuzda, tüm nesneyi yalnızca bu nesnenin bir özelliğine sahip olmakla elde etmek için bir performans cezası var mıdır?javascript object access performance

Ayrıca Unutmayın ki DOM erişimi hakkında konuşmuyorum, bunlar saf basit Javascript nesneleridir. Örneğin

: Varsayalım

hızlı ancak emin olmamak:

var length = some.object[key].length; 

if(length === condition){ 
    // Do something that doesnt need anything inside of some.object[key] 
} 
else{ 
    var object = some.object[key]; 
    // Do something that requires stuff inside of some.object[key] 
} 

Bunu yavaş ama olacağını düşünüyorum

aşağıdaki kodu arasındaki performans farkının çeşit var mı önemliyse emin.

var object = some.object[key]; 

if(object.length === condition){ 
    // Do something that doesnt need anything inside of some.object[key] 
} 
else{ 
    // Do something that requires stuff inside of some.object[key] 
} 

cevap

15

Evet, bir performans cezası var.

İç içe geçmiş bir özellik ne kadar derin olursa, özellik aramasını gerçekleştirmek için daha fazla zaman gerekir.

High Performance JavaScript numaralı kitabın free chapter numaralı kitabını kontrol edin, sayfa 31 içinde özellikle Nested Üyeleriyle ilgili konuşur.

(mülkiyet derinliğine ilişkin Erişim süresi)

Ayrıca bkz bu performans testi:

+1

bağlantı öldü ve daha yeni ile güncel olabilir tarayıcılar? – caub

+0

bu bağlantı çalışmalıdır. https://www.nczonline.net/experiments/javascript/performance/data-access.html – kimsk

İlgili konular