Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象文字中的引用变量?_Javascript_Object Literal - Fatal编程技术网

Javascript 对象文字中的引用变量?

Javascript 对象文字中的引用变量?,javascript,object-literal,Javascript,Object Literal,说我有 myfunc({ var1: 1, var2: 2, }) 如果我希望有一个使用当前未命名对象的值,我将如何做到这一点 如果我愿意的话 myfunc({ var1: 1, var2: 2, var3: this.var1 + this.var2 }) 显然,这是行不通的 正确的语法是什么?不幸的是,这是不可能的。在构造对象文字时,在计算整个文字之前,不存在对该对象的外部引用。在此阶段使用此的唯一方法是使用构造函数: function MyObject() {

说我有

myfunc({
  var1: 1,
  var2: 2,
})
如果我希望有一个使用当前未命名对象的值,我将如何做到这一点

如果我愿意的话

myfunc({
  var1: 1,
  var2: 2,
  var3: this.var1 + this.var2
})
显然,这是行不通的


正确的语法是什么?

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

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

myfunc(new MyObject());

你不能用你正在使用的符号来做。在此上下文中,对象文字本身没有任何概念

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

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

alert(x.v3());

我认为这正是OP想要的。问题是语法不同于x.v1和x.v3()。如果您想要相同的语法,可以将v1和v2也更改为函数