【问题标题】:Is there a way to get function or or property in Javascript object有没有办法在 Javascript 对象中获取函数或属性
【发布时间】:2018-10-17 06:37:59
【问题描述】:

例如有一个对象颜色。

colors = {
  white: '#fff',
  whiteF: (opacity=1) => `rgba(255,255,255,${opacity})`    
}

有没有更好的方法来像这样连接它们:如果我调用colors.white,它将调用十六进制,如果我调用colors.white(.3),它将得到 rgba 一个。

【问题讨论】:

  • 您不可能拥有具有相同键的字典,后者将覆盖。相反,为什么不让颜色本身成为一个函数,您可以选择使用空参数调用它来调用白色或使用三元运算符调用褪色白色的参数。 function color (opacity) { return opacity ? `rgba(255,255,255,${opacity})` : '#fff' }

标签: javascript object properties


【解决方案1】:

在函数内部设置条件应该可以解决问题(使用默认值)

const colors = {
  white: (opacity=1) => {
    if(opacity === 1){
      return '#fff'
    }else{
      return`rgba(255,255,255,${opacity})`
    }
  }
}

> colors.white()
'#fff'
> colors.white(.3)
'rgba(255,255,255,0.3)'

【讨论】:

    【解决方案2】:

    您可以根据传递给它的参数使用将充当用户属性或方法的委托者的函数,如下所示:

    colors = {
      white: '#fff',
      whiteF: (opacity=1) => `rgba(255,255,255,${opacity})` ,
       getColor:function(opacity){
         if(opacity)
         return this.whiteF(opacity);
         else {
             return this.white;
         }
    
      }
    }
     console.log(colors.getColor());
     console.log(colors.getColor(0.3));
    

    这样,您的方法调用将返回属性或函数调用。

    【讨论】:

      猜你喜欢
      • 2019-11-27
      • 2012-09-25
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多