2012-07-27 12 views
6

Czy możliwe jest posiadanie funkcji self executing, która jest wartością właściwości obiektu, przypisać wartości do innych właściwości w obiekcie?Funkcja self executing jako wartość właściwości obiektu w javascript

np. - chciałbym to zrobić:

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

Ale "to" w nowej funkcji zdaje się odnosić do b.e. Czy jest możliwy dostęp do rodzica b.e (tj. B) z wnętrza funkcji?

+0

nie widzę dlaczego chcesz utworzyć anonimową funkcję, tak jak obecnie. – Utkanos

+0

Jaki jest twój cel końcowy tutaj? Aby wykonać kod podczas tworzenia obiektu, który edytuje inne właściwości obiektu? – jackwanders

+0

@jackwanders - tak. Zastanawiałem się tylko, czy można to zrobić w ten sposób jako skrót do metody Jakeclarcksona poniżej. –

Odpowiedz

7

Oto jak to zrobić.

Często nazywany wzór moduł (more info)

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

Można uzyskać dostęp do wartości w function, wystarczy pozbyć się new, tj

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

Tak, ale to nie spowoduje przypisania wartości do b.d, chyba że zadzwonię do b.e(). Miałem nadzieję, że użyję do tego funkcji samosprawdzającej. –

+0

Ale wtedy musisz wyraźnie wywołać b.e() - to wiąże e do obiektu b. Tak nie jest w przypadku funkcji samosprawdzania. – Christoph

Powiązane problemy