#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
, и это казалось «неправильным».