Один простой способ убедиться, что функция запускается только один раз, - это просто удалить метод в конце:
this.init = function(){
// Do a bunch of stuff here
// now delete:
delete this.init;
}
или вы можете переназначить свойство в нерабочее состояние, если вам нужно будет вызвать его снова:
this.init = function(){
// Do a bunch of stuff here
this.init - function() {};
}
Но это только гарантирует, что функция будет запускаться один раз для экземпляра - если вам нужно, чтобы она запускалась только один раз, когда-либо , ваш подход на основе флагов, вероятно, лучше, и, как и другие постеры предположили, что ваши опасения по поводу состояния гонки необоснованны с помощью однопоточного кода.