2012-07-27 4 views
6

Ist es möglich, eine selbstausführende Funktion zu haben, die einem Objekteigenschaftswert Werte zu anderen Eigenschaften im Objekt zuweist?Selbstausführende Funktion als Objekteigenschaftswert in Javascript

z.B. - was würde Ich mag es, dies zu tun:

var b={ 
    c:'hi', 
    d:null, 
    e:new function(){this.d=5} 
}; 

Aber die „this“ in der neuen Funktion scheint siehe B. E. Ist es möglich, auf das b.e Elternelement (d. H. B) von innerhalb der Funktion zuzugreifen?

+0

Ich kann nicht sehen warum möchten Sie eine anonyme Funktion instanziieren, wie Sie derzeit sind. – Utkanos

+0

Was ist dein Endziel hier? Um Code während der Erstellung des Objekts auszuführen, der andere Eigenschaften des Objekts bearbeitet? – jackwanders

+0

@jackwanders - ja. Ich habe mich nur gefragt, ob es möglich ist, es so zu machen, als eine Art Verknüpfung zu Jakeckarcks Methode unten. –

Antwort

7

Dies ist, wie Sie es tun.

Oft ist das Modul Muster (more info)

genannt
var b = function() { 
    var c = 'hi'; 
    var d = null; 

    return { 
    c : c, 
    d : d, 
    e : function() { 
     // this function can access the var d in the closure. 
     d = 5; 
    } 
    } 
}(); 
1

Sie den Wert innerhalb des function zugreifen können, müssen Sie nur die new loszuwerden, also

e: function() { 
    this.d = 5; 
} 
+0

Ja, aber das wird nicht zu b.d zugewiesen, es sei denn, ich rufe b.e() auf. Ich hatte gehofft, eine selbstausführende Funktion zu benutzen. –

+0

Aber dann muss man explizit b.e() aufrufen - das bindet e an das Objekt b. Was bei einer selbsterstellenden Funktion nicht der Fall ist. – Christoph

Verwandte Themen