javascript - 对象字面量/初始化程序中的自引用

标签 javascript object-literal

有什么方法可以让像下面这样的东西在 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 第五版规范引入的语法扩展,大多数现代浏览器(包括 IE9)都支持该语法。

关于javascript - 对象字面量/初始化程序中的自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32809592/

相关文章:

javascript - 当从 JavaScript 中的外部文本文件读取时,如何正确显示国家标志(UTF-8)?

javascript - 你如何在 flot(用于绘图的 jQuery 插件)中创建粗体轴?

javascript - 为什么这个对象字面量没有呈现给 JSDoc?

javascript - 对象文字中的引用变量?

javascript - 如何为 JavaScript 中通过对象文字模拟的命名函数参数设置默认值?

javascript - 如何验证空输入

php - HTML 表单中的操作 ="#main_body"是什么意思

javascript - angularjs 阻止跨源请求

javascript - 为什么大多数 javascript 框架都使用对象字面量

带有 getter 的 typescript 可选属性