Есть код подобного вида:
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());
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет) искал по сети так и не нашел ответаЕсть анимация в angular 5:
Необходимо отобразить 3D модель (OBJ файл ) на сайте, с возможностью накладывать текстуры через элементы управления (Конструктор одежды)
Есть формаВ ней следующие поля (FirstName, LastName, Company, Email, Password) + кнопка с Onclick (отправка данных на сервер)