Есть код подобного вида:
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 будет вычисляться динамически.
объект еще не создан, когда вы используете this в выражении и поэтому он не определен. Для того чтобы передать контекст объекта, можно использовать функцию bind().
function test() {
return {
foo: 2,
bar: 3,
value: function() {
return this.foo + this.bar;
}
};
}
console.log(test().value());
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости