1

好的,这看起来很简单,但我无法让它工作。我需要在一个对象中组合变量。像这样的东西:

var i = {
    a: 1,
    b: " sheep",
    c: this.a + this.b
}

这样以后我可以做类似的事情:

i.a = 3;
console.log(i.c);

并获得“3只羊”。

这只是愚蠢吗?或者最接近它的东西是什么?

4

3 回答 3

7

使用一个函数。

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

i.a = 3;
console.log(i.c());

这看起来像它,但无论如何要避免函数调用()。我见过 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);
于 2013-03-18T20:47:28.887 回答
3

仅当您这样做时,才有可能在对象文字中:

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

console.log( i.c() );
于 2013-03-18T20:47:33.013 回答
3
var i = {
    a: 1,
    b: " sheep",
    c: function () { return this.a + this.b }
}

i.a = 3;
console.log(i.c());
于 2013-03-18T20:47:36.657 回答