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