2010-05-29 53 views
12

Trong Javascript, khi bạn nhận được một tài sản của một đối tượng, có một hình phạt hiệu suất để nhận được toàn bộ đối tượng vs chỉ nhận được một tài sản của đối tượng đó?javascript đối tượng truy cập hiệu suất

Cũng lưu ý rằng tôi không nói về truy cập DOM, đây là những đối tượng Javascript đơn giản thuần túy.

Ví dụ:

Có một số loại khác biệt hiệu suất giữa đoạn mã sau:

giả định là nhanh hơn nhưng không chắc chắn:

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] 
} 

Tôi nghĩ rằng đây sẽ là chậm hơn nhưng không chắc chắn nếu nó quan trọng.

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] 
} 

Trả lời

15

Có, có một hình phạt về hiệu suất.

Sâu hơn là thuộc tính lồng nhau, cần có thêm thời gian để thực hiện tra cứu thuộc tính.

Kiểm tra điều này free chapter của sách High Performance JavaScript, trong trang 31, nó nói cụ thể về các thành viên lồng nhau.

(thời gian truy cập liên quan đến độ sâu tài sản)

Xem thêm này kiểm tra hiệu suất:

+1

liên kết là chết và nó có thể được cập nhật với gần đây trình duyệt? – caub

+0

liên kết này sẽ hoạt động. https://www.nczonline.net/experiments/javascript/performance/data-access.html – kimsk

Các vấn đề liên quan