Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Использование this в return

#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());

Комментариев нет:

Отправить комментарий