对象文字中的引用变量?

时间:2011-02-01 04:37:59

标签: javascript object-literal

说我有

myfunc({
  var1: 1,
  var2: 2,
})

如果我想拥有一个使用当前未命名对象的值,我该怎么做?

例如,如果我想要

myfunc({
  var1: 1,
  var2: 2,
  var3: this.var1 + this.var2
})

显然这不起作用。

正确的语法是什么?

3 个答案:

答案 0 :(得分:18)

你可以让var3成为一个函数,调用它将允许你使用'this':

x= {
    v1:4,
    v2:5,
    v3:function(){return this.v1 + this.v2;}
};

alert(x.v3());

答案 1 :(得分:5)

不幸的是,这是不可能的。在构造对象文字时,在评估整个文字之前,不存在对该对象的外部引用。在此阶段使用this的唯一方法是使用构造函数:

function MyObject() {
  this.var1 = 1;
  this.var2 = 2;
  this.var3 = this.var1 + this.var2;
}

myfunc(new MyObject());

答案 2 :(得分:3)

你不能用你正在使用的符号来做。在这种情况下,对象文字没有任何自己的概念。