2013-05-19 62 views
0

假设我有这样的事情:嵌套对象相互引用?

network = { 
    post: function(t) { 
    console.log(t); } 
    protocol: { 
    init: function() { 
     /* network.post("init") */ } } } 

注释的部分,我将如何让network.protocol.init功能,通过某种相对链接的network.post打电话? network.protocol如何找到网络变量?

谢谢。 :)

回答

1

这是对象字面值语法的限制;你不能这样做。

您最好的选择是通过对象的属性引用network,并在通过对象字面量语法声明对象后立即添加它;

network = { 
    post: function(t) { 
    console.log(t); } 
    protocol: { 
    init: function() { 
     this.network.post("init") } } } 

network.protocol.network = network; 

...这工作,因为network财产是否存在等被推迟,直到init本身的执行。

+0

我认为这会是这样的...我希望有更清洁的东西。有任何想法吗? – DanRedux

+0

就像它恐怕会变得干净一样。您当然可以稍后设置整个“协议”,而不仅仅是“网络”属性。然后,您可以修改“协议”的“init”以接受“网络”实例作为参数....这可能更清洁。 – Matt