2012-07-27 42 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

相关问题