2016-06-20 94 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