2013-03-18 56 views
1

好吧,这看起来很简单,但我不能得到它的工作。我需要将变量结合在一起。事情是这样的:结合对象内的变量的Javascript

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

因此以后我可以这样做:

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

并获得 “3羊”。

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

回答

7

使用函数。

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

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

这看起来像,但反正是有避免函数调用()。我见过在对象中使用get和set。这是被广泛使用的东西吗?

当然,你可以用干将,but they won't work in IE <9(而上面的代码),而且也没有办法,因为它依赖于一个完全新的语言语法垫片它。

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

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

这看起来像,但反正是有避免函数调用()。我已经看到了在对象中使用的[get和set](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters)。这是被广泛使用的东西吗? – mattl 2013-03-19 10:18:40

+0

当然,这也会起作用。看我的编辑。 – 2013-03-19 12:44:30

+0

真棒 - 谢谢 – mattl 2013-03-19 19:34:27

3

有可能在对象字面只有当你这样做:

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

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

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