15

说我有

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

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

例如,如果我想要

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

显然这不起作用。

正确的语法是什么?

4

3 回答 3

21

您可以使 var3 成为一个函数,并调用它将允许您使用“this”:

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

alert(x.v3());
于 2011-02-01T04:51:10.857 回答
6

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

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

myfunc(new MyObject());
于 2011-02-01T04:42:41.747 回答
3

你不能在你使用的符号中做到这一点。在这种情况下,对象字面量本身没有任何概念。

于 2011-02-01T04:42:52.270 回答