我如何构造一个对象数组,以便以这种方式引用属性?

时间:2017-06-20 17:27:31

标签: javascript

我的应用有多个屏幕,我想存储对象中每个屏幕的属性。我希望能够通过名称轻松引用它,例如:

var homelabel = screen('home').label;

var settingsIcon = screen['settings'].icon;

如何做到这一点?

3 个答案:

答案 0 :(得分:1)



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);




答案 1 :(得分:0)

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 );

答案 2 :(得分:0)

要在你的问题中使用它,创建一个函数并返回一个对象。如果您调用函数的属性不存在,则应返回一个空对象以避免错误。



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