Javascript 如何构造对象数组,以便以这种方式引用属性?
我的应用程序有多个屏幕,我想在一个对象中存储每个屏幕的属性。我希望能够通过名称方便地引用它,例如:Javascript 如何构造对象数组,以便以这种方式引用属性?,javascript,Javascript,我的应用程序有多个屏幕,我想在一个对象中存储每个屏幕的属性。我希望能够通过名称方便地引用它,例如: var homelabel = screen('home').label; 或 如何实现这一点?屏幕必须是一个函数,该函数返回一个对象,其中包含传递给该函数的任何内容。您可以将screens变量移出函数,然后可以通过引用直接访问它 变量屏幕={ 主页:{ 标签:“家”, 图标:“fa fa home” }, 设置:{ 标签:“设置”, 图标:“fa-fa-cog” } }; 功能屏幕类型{ i
var homelabel = screen('home').label;
或
如何实现这一点?屏幕必须是一个函数,该函数返回一个对象,其中包含传递给该函数的任何内容。您可以将screens变量移出函数,然后可以通过引用直接访问它
变量屏幕={
主页:{
标签:“家”,
图标:“fa fa home”
},
设置:{
标签:“设置”,
图标:“fa-fa-cog”
}
};
功能屏幕类型{
ifscreen输入屏幕{
返回屏幕[屏幕类型];
}
返回{};
}
var home=屏幕“主页”。标签;
控制台.loghome;
console.log屏幕['home'].图标
让屏幕={
主页:{
图标:home_icon.png,
标签:主页标签
},
设置:{
图标:设置\u icon.png,
标签:设置\u标签
}
}
console.logscreen[home]。标签;
console.logscreen[设置]。图标 要解决这个问题,请创建一个函数并返回一个对象。如果调用函数时使用的属性不存在,则应返回空对象以避免错误 功能屏幕道具{ 设obj={ 主页:{ 标签:“foo” }, 设置:{ 图标:“酒吧” } }; 返回obj[prop]|{}; } 控制台。日志屏幕“主页”。标签//福
控制台.日志屏幕'foo'。栏//Undefinedy您可以将screen设置为对象,然后像screen['home']或screen['settings']那样访问它,除非您讨论的是不同的html页面,否则这是不同的问题screen需要是一个返回对象的函数。不,没有涉及数组。关于screen.home.label或screen.settings.icon,这是普通对象的开箱即用行为。如果您需要括号,screen必须是一个函数。我更喜欢字符串,因为我的HTML元素将具有类似于data target='home'的内容,并且很容易调用l screen[$this.data'target']。label您也可以使用常规的旧对象来实现这一点。例如屏幕['home'].标签
var settingsIcon = screen['settings'].icon;