有没有一种简单的方法可以将这两条线组成一条线?

时间:2013-04-15 00:06:17

标签: javascript object object-literal

以下是两行:

pixels[x-left] = {};
pixels[x-left][y] = true;

如果两个代码可以组合成一个表达式,那么它将极大地允许我清理一些代码。

我的第一次尝试看起来像这样:

pixels[x-left] = { y: true };

然而,字母y被用作索引而不是y的值,这是不行的。

2 个答案:

答案 0 :(得分:3)

我会立即开始说Bergi的解决方案应该是首选,但如果你不介意杀死代码的可读性:

(pixels[x-left] = {})[y] = true;

Fiddle

这可以作为assignment expression返回指定的值(在这种情况下,是对指定对象的引用)。

答案 1 :(得分:2)

不,没有没有干净的*。对象文字中的任何属性名称都按字面解释。

一种出路就是某种辅助功能,比如

Object.set = function(o, p, v) { o[p] = v; return o; };

pixels[x-left] = Object.set({}, y, true);

然后阅读代码的每个人都需要了解Object.set

*在@ Fabricio回答之后我不能再说“不可能”了: - )