Tu pourrais le faire comme ça
var a, b
var foo = {
a: a = 5,
b: b = 6,
c: a + b
}
Cette méthode s'est avérée utile lorsque j'ai dû me référer à l'objet sur lequel une fonction a été déclarée à l'origine. Voici un exemple minimal de la façon dont je l'ai utilisé:
function createMyObject() {
var count = 0, self
return {
a: self = {
log: function() {
console.log(count++)
return self
}
}
}
}
En définissant self en tant qu'objet contenant la fonction d'impression, vous autorisez la fonction à se référer à cet objet. Cela signifie que vous n'aurez pas à «lier» la fonction d'impression à un objet si vous devez la transmettre ailleurs.
Si vous préférez, utilisez this
comme illustré ci-dessous
function createMyObject() {
var count = 0
return {
a: {
log: function() {
console.log(count++)
return this
}
}
}
}
Ensuite, le code suivant enregistrera 0, 1, 2, puis donnera une erreur
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!
En utilisant la méthode self, vous garantissez que print renverra toujours le même objet quel que soit le contexte dans lequel la fonction est exécutée. Le code ci-dessus fonctionnera très bien et enregistrera 0, 1, 2 et 3 lors de l'utilisation de la version autonome de createMyObject()
.