2016-06-20 68 views
-1

难道是多个语义将它们存储作为数组:语义存储RGB颜色值

var niceBlue = [27, 125, 161]; 

或对象:

var coolGreen = {red: 74, green: 173, blue: 90}; 

或作为与速记属性名称的对象:(然后,对大写字母还是不会更好?)

var deepPurple = {r: 86, g: 45, b: 92}; 
+4

这取决于你对他们做什么?例如,如果你只打算在没有修改的情况下使用它们,你也可以将它们存储为十六进制字符串。 – Aaron

+0

“更多语义”是什么意思?对另一个用户更易读?如果你想清楚你在做什么,另一种选择可能是使用.get,.green,.blue属性,使用.getHex()或getRGB()方法创建一个Color类...取决于你有多少将在您的代码中处理。 – Toby

+0

我想将它们存储为RGB,因为它们将被JS操纵,我只是想设置一个标准来跟随它们。 – darklinen

回答

0

回复:使用Color类是矫枉过正...这是代码只有几行,但它给你一个更灵活的解决方案

function Color(red,green,blue) 
{ 
    this.red = red; 
    this.green = green; 
    this.blue = blue; 
} 

var red = new Color(255,0,0) 
var green = new Color(0,255,0) 
var blue = new Color(0,0,255); 

将来,如果您决定添加一个alpha属性,没有问题。

function Color(red,green,blue,alpha) 
{ 
    this.red = red; 
    this.green = green; 
    this.blue = blue; 
    this.alpha = (alpha!=undefined)? alpha: 100; 

} 

var red = new Color(255,0,0) 
var green = new Color(0,255,0) 
var blue = new Color(0,0,255); 
var alpha = new Color(255,0,0,50) 

所有原始对象仍然可以正常工作。您可以轻松添加toNumber()或toString()方法以进行调试。这对我来说似乎没有多大用处。我总是建议不要使用匿名JSON包装作为数据传输对象。他们很快回来咬你。 :)

底线 - 如果您不费吹灰之力思考语义和可读性,那么您的代码听起来像是准备好了一些“类”。

+1

您已将您的案例分配给Alpha后端到前端。 – PeterT

+0

谢谢。我从来没有使用'班',采取OO方法,所以我有点犹豫,但你说得对,这是一个很好的解决方案。哪里是放课的最佳地点?我有一个代码的命名空间,里面有一个init,像'var myApp = {userOptions:{...},init:function(){...}}'。我的大部分代码都在init内部,放在那里是个好主意吗? – darklinen

+0

谢谢彼得 - 编辑。 – Toby