Você poderia fazer assim
var a, b
var foo = {
a: a = 5,
b: b = 6,
c: a + b
}
Esse método se mostrou útil quando tive que me referir ao objeto em que uma função foi originalmente declarada. A seguir, é apresentado um exemplo mínimo de como eu o usei:
function createMyObject() {
var count = 0, self
return {
a: self = {
log: function() {
console.log(count++)
return self
}
}
}
}
Ao definir self como o objeto que contém a função de impressão, você permite que a função se refira a esse objeto. Isso significa que você não precisará 'vincular' a função de impressão a um objeto se precisar passá-la para outro lugar.
Se preferir, use this
como ilustrado abaixo
function createMyObject() {
var count = 0
return {
a: {
log: function() {
console.log(count++)
return this
}
}
}
}
Em seguida, o código a seguir registrará 0, 1, 2 e, em seguida, dará um erro
var o = createMyObject()
var log = o.a.log
o.a.log().log() // this refers to the o.a object so the chaining works
log().log() // this refers to the window object so the chaining fails!
Ao usar o método self, você garante que a impressão sempre retornará o mesmo objeto, independentemente do contexto em que a função é executada. O código acima funcionará perfeitamente e registrará 0, 1, 2 e 3 ao usar a versão própria do createMyObject()
.