Справочная переменная в буквальном объекте? [дублировать
-
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());
Вы не можете сделать это в нотации, которую вы используете. Литерал объекта не имеет никакого представления о себе в этом контексте.
Не связан с StackOverflow