Подтвердить что ты не робот

Ссылочная переменная в объектном литерале?

сказать, что у меня

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

myfunc(new MyObject());

Ответ 2

Вы можете сделать var3 функцией, и вызов ее позволит вам использовать 'this':

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

alert(x.v3());

Ответ 3

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

Ответ 4

Я нашел это о переменных и объектных литералах в Интернете. Надеюсь, это поможет! нажмите здесь