Необходимо ли » это` для доступа к переменным-членам классов typescript?

#javascript #typescript #binding #this

Вопрос:

В приведенном ниже классе я использую this 9 раз для работы с переменными-членами и функциями. Это засоряет весь мой прекрасный код! Могу ли я что-нибудь сделать, чтобы сделать его красивее? Например, есть ли в любом случае доступ context к переменной-члену без ссылки на this нее ?

 //controls timing and game phases.

import { Context } from "./helpers/Context"
import { Model } from "./Model"
import { View } from "./View"

export class Controller {

    context : Context;

    constructor(context : Context) {
        this.context = context;
    }
    
    //make other objects in context, add them in.
    begin = () : void => {
        this.context.model = new Model(this.context);
        this.context.view = new View(this.context);
        this.init();
    } 

    init = () : void => {
        this.context.model.init();
        this.context.view.init();

        //causes an error! help.
        this.context.model.preloadModels([ 
            "/models/bleachers.obj"
        ], () => { this.buildWorld(); })
    }

    buildWorld = () : void => {
        this.context.view.makeGrass();
        this.context.view.makeSkybox();
        this.context.view.makeBleachersOnEdgeOfField();
    }

}
 

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

1. Один из способов-использовать заводские функции вместо классов, но я не знаю, является ли это жизнеспособным решением для вас.

2. @ShamPooSham. Интересно! Расскажи мне больше?

3. Это выглядит довольно странно, но, по сути, вы создаете функцию вместо класса и используете функции закрытия вместо методов экземпляра внутри него. Взгляните на этот средний пост. medium.com/programming-essentials/…

Ответ №1:

Если вы привыкли к таким языкам, как C или Java, где вам не нужно использовать this поля классов, поначалу это может показаться странным. Я тоже подумал о том же. Но для таких языков, как Javascript и Python, писать нормально this и self часто. Я думаю, что это просто специфичный для языка стиль, который может показаться уродливым тому, кто не привык его видеть, но это нормальный способ, и большинство программистов JS не подумали бы, что это уродливо, потому что они привыкли к этому.

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

1. Хорошо! Понятный. Просто казалось , что половина слов, которые я писал, были this , и это казалось «неправильным».