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

标签 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 仍然绑定(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/

相关文章:

javascript - 排序对象数组

javascript - 对象字面量方法的范围

javascript - 单击链接时 IE 会一次又一次弹出,而不是显示在同一屏幕中

javascript - 单击按钮向下滚动页面到另一个 React 组件

javascript - 将点击事件绑定(bind)到 Angular 链接器中的元素和子元素

npm - GatsbyJS - 无法解析 'babel-runtime/helpers/possibleConstructorReturn'

javascript - maxlength 属性的头韵

java - 如何提取java方法调用?

matlab - 从 matlab src 代码调用图形生成

javascript - 对象定义中的箭头函数