有没有办法让下面这样的东西在JavaScript中工作?
var foo = {
a: 5,
b: 6,
c: this.a + this.b // Doesn't work
};
在当前的形式中,这段代码显然抛出了一个引用错误,因为this
并不表示foo
.但是,有没有办法让对象文本的属性中的值依赖于前面声明的其他属性?
有没有办法让下面这样的东西在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)都支持这种语法.