Есть код подобного вида:
function test() {
return {
foo: 2,
bar: 3,
value: this.foo + this.bar
}
}
Почему this не ссылается на нужный объект?
Ответ
Вычисление выражения this.foo + this.bar происходит в контексте функции test. Вы не можете в момент создания нового объекта обращаться к его свойствам.
Добиться похожего результата можно так:
function test() {
return {
foo: 2,
bar: 3,
get value() {
return this.foo + this.bar;
}
};
}
console.log(test().value);
В таком случае значение свойства value будет вычисляться динамически.
Комментариев нет:
Отправить комментарий