如果对象之间存在依赖关系,是否可以使用文字符号初始化对象?

时间:2013-04-29 19:16:07

标签: javascript dependencies object-literal

假设我有一个像这样的对象

a = {b = function() { return 1 }, c: 2, f: 3}
a.z = a.b()

有没有办法在对象文字符号的单个赋值中编写它?类似于:

a = {b: function() { return 1 }, c: 2, f: 3, z: this.b()}

显然这不起作用,因为this仍然绑定到定义对象的范围,而不是对象本身。 a.b()不起作用,因为a尚未定义。

我实际上正在使用CoffeeScript,但我很确定如果有一种聪明的方法可以在纯JavaScript中执行此操作,那么它在CoffeeScript中看起来会更短,更“实用”。

1 个答案:

答案 0 :(得分:2)

你可以利用JS的漏洞分配将属性的值记忆到对象文字中的另一个变量:

a = { b: b = function() { return 1 }, c: 2, f: 3, z: b() };

请注意,如图所示,b是全局的,因此您应该使用“var b,a =”(其余代码如图所示)来防止泄漏。