Javascript结合对象内的变量

mat*_*ttl 1 javascript

好吧,这看起来很简单,但我无法让它发挥作用.我需要在一个obect中组合变量.像这样的东西:

var i = {
    a: 1,
    b: " sheep",
    c: this.a + this.b
}
Run Code Online (Sandbox Code Playgroud)

所以以后我可以这样做:

i.a = 3;
console.log(i.c);
Run Code Online (Sandbox Code Playgroud)

得到"三只羊".

这真傻吗?或者最接近它的是什么?

Mat*_*all 7

使用功能.

var i = {
    a: 1,
    b: " sheep",
    c: function () {
        return this.a + this.b;
    }
}

i.a = 3;
console.log(i.c());
Run Code Online (Sandbox Code Playgroud)

这看起来像但是无论如何都要避免函数调用().我已经看到get和set在对象中使用了.这是广泛使用的东西吗?

当然,你可以使用getter,但它们不能在IE <9中工作(而上面的代码会),并且由于它依赖于一种全新的语言语法,因此无法对其进行填充.

var i = {
    a: 1,
    b: " sheep",
    get c() {
        return this.a + this.b;
    }
}

i.a = 3;
console.log(i.c);
Run Code Online (Sandbox Code Playgroud)