对象文本/初始值设定项中的自引用
2022-08-29 22:16:07
有没有办法让像下面这样的东西在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)都支持该语法。
你可以做这样的事情:
var foo = {
a: 5,
b: 6,
init: function() {
this.c = this.a + this.b;
return this;
}
}.init();
这将是对象的某种一次性初始化。
请注意,您实际上是将返回值赋值给 ,因此您必须这样做。init()
foo
return this