有没有办法让下面这样的东西在JavaScript中工作?

var foo = {
    a: 5,
    b: 6,
    c: this.a + this.b  // Doesn't work
};

在当前的形式中,这段代码显然抛出了一个引用错误,因为this并不表示foo.但是,有没有办法让对象文本的属性中的值依赖于前面声明的其他属性?

推荐答案

嗯,我唯一能告诉你的是getter:

var foo = {
  a: 5,
  b: 6,
  get c() {
    return this.a + this.b;
  }
}

console.log(foo.c) // 11

这是ECMAScript第5版规范引入的语法扩展,大多数现代浏览器(包括IE9)都支持这种语法.

Javascript相关问答推荐

JS、C++和C#给出不同的Base 64 Guid编码结果

Google图表时间轴—更改hAxis文本 colored颜色

自定义高图中的x轴标签序列

MathJax可以导入本地HTML文档使用的JS文件吗?

数字时钟在JavaScript中不动态更新

无法检测卡片重叠状态的问题

用于编辑CSS样式的Java脚本

我可以使用空手道用户界面来获取网页的当前滚动位置吗?

如何将多维数组插入到另一个多维数组中?

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

为什么当我更新数据库时,我的所有组件都重新呈现?

传递方法VS泛型对象VS事件特定对象

Google脚本数组映射函数横向输出

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

如何根据输入数量正确显示alert ?

select 2-删除js插入的项目将其保留为选项

对不同目录中的Angular material 表列进行排序

需要刷新以查看Mern堆栈应用程序中的更改

使用VITE开发服务器处理错误

使用python,我如何判断一个html复选框是否被隐藏,以及它是否被S选中?