为了账号安全,请及时绑定邮箱和手机立即绑定

js设计模式问题

js设计模式问题

白猪掌柜的 2019-03-21 22:19:56
export const typeMarry = (type) => {  const charts = ['pie','bar','line'],        text = ['normalText','multText'],        media = ['file','picture','music','video']  if(charts.indexOf(type) !== -1) {    return 'CHARTS'  }  if(text.indexOf(type) !== -1) {    return 'TEXT'  }  if(media.indexOf(type) !== -1) {    return 'MEDIA'  }}这个方法如何改写成维护性高写法,类似于策略模式?
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

扩展的话只用修改types就行了


const types = {

  'CHARTS':['pie','bar','line'],

  'TEXT':['normalText','multText'],

  'MEDIA':['file','picture','music','video'],

}


export const typeMarry = (type) => {

   for(var k in types)

     if(types[k].includes(type))

       return k;

}


查看完整回答
反对 回复 2019-04-10
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

function isCharts (type) {

  return ['pie','bar','line'].includes(type) ? 'CHARTS' : false

}


function isText (type) {

  return ['normalText','multText'].includes(type) ? 'TEXT' : false

}


function isMedia (type) {

  return ['file','picture','music','video'].includes(type) ? 'MEDIA' : false

}


const typefun = [isCharts, isText, isMedia]


export const typeMarry = (type) => {

  for (let i = 0, len = typefun.length; i < len; i++) {

    let cur = typefun[i](type)

    if (cur) return cur

  }

}


查看完整回答
反对 回复 2019-04-10
?
ibeautiful

TA贡献1993条经验 获得超5个赞

直接返回组件实例就行了,没有更多代码的话也没什么好优化的点。


查看完整回答
反对 回复 2019-04-10
  • 3 回答
  • 0 关注
  • 357 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信