Очевидный простой ответ отсутствует, поэтому для полноты:
Но есть , любой способ иметь значения в свойствах объекта литерала зависит от других объявленных свойств раньше?
Нет. Все решения здесь откладывают до тех пор, пока объект не будет создан (по-разному), а затем назначит третье свойство. Простейший способ состоит в том, чтобы просто сделать это:
var foo = { a: 5, b: 6 }; foo.c = foo.a + foo.b;
Все остальные - более косвенные способы сделать то же самое. (Felix's особенно умный, но требует создания и уничтожения временной функции, добавления сложности и либо оставляет дополнительное свойство для объекта, либо [если вы
delete
это свойство] влияет на производительность последующего свойства доступ к этому объекту.)Если вам нужно, чтобы все были в одном выражении, вы можете сделать это без временного свойства:
var foo = function(o) { o.c = o.a + o.b; return o; }({a: 5, b: 6});
Или, конечно, если вам нужно для этого более одного раза:
function buildFoo(a, b) { var o = {a: a, b: b}; o.c = o.a + o.b; return o; }
, где вам нужно его использовать:
var foo = buildFoo(5, 6);
Вот как реализовать то, что я предложил в комментарии:
import tkinter
gui = tkinter.Tk()
gui.title('TicTacToe')
gui.geometry('700x700')
button_frame = tkinter.Frame(gui) # Frame to hold (and group) buttons.
singlePlayerBut = tkinter.Button(button_frame, text='Single Player', command=0)
singlePlayerBut.pack(side=tkinter.RIGHT, padx=50, anchor=tkinter.CENTER)
multiPlayerBut = tkinter.Button(button_frame, text='Multi Player', command=0)
multiPlayerBut.pack(side=tkinter.LEFT, padx=50, anchor=tkinter.CENTER)
button_frame.pack() # Default side is tkinter.TOP
gui.mainloop()