2010-05-29 175 views
12

在Javascript中,當你獲取一個對象的屬性時,是否有一個性能損失獲得整個對象vs只獲得該對象的屬性?javascript對象訪問性能

另外請記住,我不是在談論DOM訪問這些是純粹的簡單的Javascript對象。

例如:

是否有某種下面的代碼之間的性能差異:

假設爲快,但不知道:

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

我認爲這將是慢,但不肯定是否重要。

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

回答

15

是的,存在性能損失。

嵌套的屬性越深,執行屬性查找所需的時間就越多。

查看本書High Performance JavaScriptfree chapter,在第31頁中,它專門討論了嵌套成員。

(涉及財產深度訪問時間)

參見本性能測試:

+1

鏈接是死的,可以把它與最近的更新瀏覽器? – caub 2015-11-12 22:09:19

+0

這個鏈接應該工作。 https://www.nczonline.net/experiments/javascript/performance/data-access.html – kimsk 2016-12-22 06:32:24