假设我有一个这样的对象
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
仍然绑定(bind)到定义对象的范围,而不是对象本身。 a.b()
也不起作用,因为 a
尚未定义。
我实际上正在使用 CoffeeScript,但我非常确定,如果有一种巧妙的方法可以在纯 JavaScript 中执行此操作,那么在 CoffeeScript 中它也会看起来更短且更“实用”。
最佳答案
您可以利用 JS 的泄漏赋值来将属性值记住到对象文字中的另一个变量:
a = { b: b = function() { return 1 }, c: 2, f: 3, z: b() };
请注意,如图所示,b 是全局变量,因此您应该使用类似“var b, a=”(其余代码如图所示)的内容来防止泄漏。
关于javascript - 如果对象的成员之间存在依赖关系,是否可以使用文字符号初始化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16286467/