這裏有兩條線:有沒有一種簡單的方法可以將這兩行變成一行?
pixels[x-left] = {};
pixels[x-left][y] = true;
這將極大地讓我清理一些代碼,如果兩者可以合併成一個單一的表達。然而信y
被用來作爲指標來代替的y
的價值,這是不正常
pixels[x-left] = { y: true };
:
我第一次嘗試看起來是這樣的。
這裏有兩條線:有沒有一種簡單的方法可以將這兩行變成一行?
pixels[x-left] = {};
pixels[x-left][y] = true;
這將極大地讓我清理一些代碼,如果兩者可以合併成一個單一的表達。然而信y
被用來作爲指標來代替的y
的價值,這是不正常
pixels[x-left] = { y: true };
:
我第一次嘗試看起來是這樣的。
我就開始馬上說BERGI的解決方案應該是首選,但如果你不這樣做介意殺死你的代碼的可讀性:
(pixels[x-left] = {})[y] = true;
這個工程作爲assignment expression返回指定的值(在這種情況下,分配的對象的引用)。
不,有不是不乾淨*。對象字面值中的任何屬性名稱都是從字面上解釋的。
一條出路將是某種形式的輔助函數,如
Object.set = function(o, p, v) { o[p] = v; return o; };
pixels[x-left] = Object.set({}, y, true);
但後來大家閱讀你的代碼需要了解Object.set
。
*後@法布里西奧的回答,我不能說出「沒有可能」更多的:-)
+ 1沒有謀殺南極的海豹。 '=]'和提到的。 'xD' –
@Abbas'y'是一個變量。 –
這是一個經常被問到的問題。我可以找到最多upvotes的重複:[使用一個Javascript對象鍵的變量](http://stackoverflow.com/questions/2274242/using-a-variable-for-a-javascript-object-key) – Bergi