Du könntest es so machen
var a, b
var foo = {
a: a = 5,
b: b = 6,
c: a + b
}
Diese Methode hat sich für mich als nützlich erwiesen, als ich mich auf das Objekt beziehen musste, für das eine Funktion ursprünglich deklariert wurde. Das Folgende ist ein minimales Beispiel dafür, wie ich es verwendet habe:
function createMyObject() {
var count = 0, self
return {
a: self = {
log: function() {
console.log(count++)
return self
}
}
}
}
Indem Sie self als das Objekt definieren, das die Druckfunktion enthält, erlauben Sie der Funktion, auf dieses Objekt zu verweisen. Dies bedeutet, dass Sie die Druckfunktion nicht an ein Objekt binden müssen, wenn Sie sie an eine andere Stelle übergeben müssen.
Wenn Sie stattdessen this
wie unten dargestellt verwenden würden
function createMyObject() {
var count = 0
return {
a: {
log: function() {
console.log(count++)
return this
}
}
}
}
Dann protokolliert der folgende Code 0, 1, 2 und gibt dann einen Fehler aus
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!
Durch die Verwendung der self-Methode stellen Sie sicher, dass print unabhängig vom Kontext, in dem die Funktion ausgeführt wird, immer dasselbe Objekt zurückgibt. Der obige Code läuft einwandfrei und protokolliert 0, 1, 2 und 3, wenn Sie die Selbstversion von verwenden createMyObject()
.