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

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

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

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

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

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

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

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

3 ответа

Решение

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

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());

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

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

Другие вопросы по тегам