2012-02-23 50 views
0

我有以下幾點:獲取物體屬性?

var skillet = { 

    age: '20', 

    names: { 

     first: 'abe', 
     last: 'watson', 
     additional: "<div>'" + age + "'</div>" 

    } 

}; 

我被陷在age,它說,它的undefined?我也嘗試names屬性中的skillet.age,該屬性不起作用。我如何在names內包含age

+0

?這工作'alert(skillet.age);' – 2012-02-23 13:08:41

+0

@MikeL .:在'additional'屬性初始值設定項中使用'age'就是問題所在。 – 2012-02-23 13:15:37

回答

2

age你指的是你的names目的是自由變量,是不是在範圍內的參考。在對象字面上,沒有辦法直接引用另一個對象字面的屬性。你必須這樣做:

var skillet = { 

    age: '20', 

    names: { 

     first: 'abe', 
     last: 'watson' 
    } 

}; 
skillet.names.additional = "<div>'" + skillet.age + "'</div>"; 
+0

爲什麼你不能使用'this'?因爲'age:'已經被定義了? – Andy 2012-02-23 13:11:05

+0

@Andy:'this'指的是包含範圍內引用的任何'this'。在對象字面上它沒有被設置爲'skillet'。沒有符號可以從文字內引用'skillet'。屬性初始值設定項的右側是在創建「skillet」時執行的。你可能在考慮'this'與在你賦給'skillet'屬性的* function *中使用它有關,但是當這個函數被*調用時,這是一個完全不同的事情。 – 2012-02-23 13:12:14

+0

ah crapola - 好吧,我需要你寫的東西嗎?我曾希望做一些像'skillet.global = {loadingUrl:'url',ajax:'

'" + loadingUrl + "'
'}'但它似乎我不能?而是必須使用'skillet.global = {loadingUrl:'url'} skillet.global .ajax =「
'" + loadingUrl + "'
」;'? – Andy 2012-02-23 13:15:57

1

當您到達additional時,skillet對象尚未定義。你有創造skillet後定義屬性

var skillet = {  
    age: '20', 
    names: { 
     first: 'abe', 
     last: 'watson' 
     //additional: "<div>'" + age + "'</div>" 
    } 
}; 
skillet.names.additional = '<div>' + skillet.age + '</div>';