Справочная переменная в буквальном объекте? [дублировать

StackOverflow https://stackoverflow.com/questions/4858931

  •  27-10-2019
  •  | 
  •  

Вопрос

Этот вопрос уже имеет ответ здесь:

Скажи, что у меня есть

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

Если я хочу иметь значение, которое использует текущий неназванный объект, как бы я это сделал?

например, если бы я хотел

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

Очевидно, это не работает.

Каким будет правильный синтаксис?

Это было полезно?

Решение

К сожалению, это невозможно. В то время как буквальный объект строится, внешняя ссылка на этот объект не существует, пока весь литерал не будет оценен. Единственный способ использовать this На этом этапе вместо этого использовать конструктор:

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

myfunc(new MyObject());

Другие советы

Вы можете сделать VAR3 функцией, и вызов ее позволит вам использовать «это»:

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

alert(x.v3());

Вы не можете сделать это в нотации, которую вы используете. Литерал объекта не имеет никакого представления о себе в этом контексте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top