2012-07-27 109 views
6

是否有可能擁有一個自我執行的函數,它是一個對象屬性值將值賦給對象中的其他屬性?在javascript中自動執行函數作爲對象屬性值

例如 - 我想這樣做是這樣的:

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

但是「這個」新功能裏面似乎是指B.E.是否可以從函數內部訪問b.e父級(即b)?

+0

我看不到你爲什麼想要像現在這樣實例化一個匿名函數。 – Utkanos 2012-07-27 12:44:24

+0

這裏您的最終目標是什麼?在對象創建期間執行代碼以編輯對象的其他屬性? – jackwanders 2012-07-27 12:44:35

+0

@jackwanders - 是的。我只是想知道是否可以這樣做,作爲下面jakeclarckson方法的一種捷徑。 – 2012-07-27 12:50:20

回答

7

這就是你如何做到的。

通常被稱爲模塊模式(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

您可以在function中訪問值,你只需要擺脫new,即

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

是的,但是,除非我叫b.e(),否則不會將值賦給b.d。我希望能夠使用自動執行功能來完成它。 – 2012-07-27 12:45:49

+0

但是你必須明確地調用b.e() - 這將e綁定到對象b。自選功能並非如此。 – Christoph 2012-07-27 12:46:01

相關問題