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

184
29 августа 2018, 02:30

Есть код подобного вида:

    function test() {
        return {
                foo: 2,
                bar: 3,
                value: this.foo + this.bar
            }
    }

Почему this не ссылается на нужный объект?

Answer 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 будет вычисляться динамически.

Answer 2

объект еще не создан, когда вы используете this в выражении и поэтому он не определен. Для того чтобы передать контекст объекта, можно использовать функцию bind().

function test() { 
    return { 
        foo: 2, 
        bar: 3, 
       value: function() { 
             return this.foo + this.bar; 
        } 
    }; 
} 
 
console.log(test().value());

READ ALSO
Анимация :leave не работает при *ngif = false в angular5

Анимация :leave не работает при *ngif = false в angular5

Всем привет) искал по сети так и не нашел ответаЕсть анимация в angular 5:

160
Как отобразить 3D модель на сайте (Obj файл)

Как отобразить 3D модель на сайте (Obj файл)

Необходимо отобразить 3D модель (OBJ файл ) на сайте, с возможностью накладывать текстуры через элементы управления (Конструктор одежды)

195
Как стартануть проект на React Native?

Как стартануть проект на React Native?

В командной строке пишу:

165
как используя onClick оставить валидацию полей (text, email)?

как используя onClick оставить валидацию полей (text, email)?

Есть формаВ ней следующие поля (FirstName, LastName, Company, Email, Password) + кнопка с Onclick (отправка данных на сервер)

145