对象文字中的引用变量?

Hai*_*ood 14 javascript object-literal

说我有

myfunc({
  var1: 1,
  var2: 2,
})
Run Code Online (Sandbox Code Playgroud)

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

如果我想要的话

myfunc({
  var1: 1,
  var2: 2,
  var3: this.var1 + this.var2
})
Run Code Online (Sandbox Code Playgroud)

显然这不起作用.

正确的语法是什么?

dav*_*vid 20

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

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

alert(x.v3());
Run Code Online (Sandbox Code Playgroud)

  • 正是OP想要的是什么. (3认同)
  • 问题是语法不同x.v1和x.v3(). (3认同)

cas*_*nca 5

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

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

myfunc(new MyObject());
Run Code Online (Sandbox Code Playgroud)