我的應用程序有多個屏幕,我想爲對象中的每個屏幕存儲屬性。我希望能夠通過名稱容易引用它,比如:我將如何構造一個對象數組,以便我可以用這種方式引用屬性?
var homelabel = screen('home').label;
或
var settingsIcon = screen['settings'].icon;
這將如何做呢?
我的應用程序有多個屏幕,我想爲對象中的每個屏幕存儲屬性。我希望能夠通過名稱容易引用它,比如:我將如何構造一個對象數組,以便我可以用這種方式引用屬性?
var homelabel = screen('home').label;
或
var settingsIcon = screen['settings'].icon;
這將如何做呢?
let screen = {
"home": {
"icon": "home_icon.png",
"label": "home_label"
},
"settings": {
"icon": "settings_icon.png",
"label": "settings_label"
}
}
console.log(screen["home"].label);
console.log(screen["settings"].icon);
screen
必須是一個函數,該函數返回傳遞給該函數的任何對象。您可以將screens
變量移出該函數,然後您可以通過引用直接訪問它。
var screens = {
home: {
label: 'Home',
icon: 'fa fa-home'
},
settings: {
label: 'Settings',
icon: 'fa fa-cog'
}
};
function screen(screenType){
if(screenType in screens){
return screens[screenType];
}
return {};
}
var home = screen('home').label;
console.log(home);
console.log(screens['home'].icon);
有它只是在你的問題,創建一個函數,並返回一個對象。如果您調用函數的屬性不存在,則應返回空對象以避免錯誤。
function screen(prop) {
let obj = {
home: {
label: 'foo'
},
settings: {
icon: 'bar'
}
};
return obj[prop] || {};
}
console.log(screen('home').label); //foo
console.log(screen('foo').bar); //undefined
你可以做'screen'那麼對象訪問它像'畫面[ '家']'或'屏幕[ '設置']',除非你是在談論不同的HTML頁面,這是一個不同的問題 –
'屏幕'將需要一個函數,*返回*一個對象。不,沒有陣列參與。 – Bergi
'screen.home.label'或'screen.settings.icon'怎麼樣 - 這是普通對象的開箱即用行爲。如果你需要括號,屏幕必須是一個功能。 – James