以下のようにコールバック関数をメソッドとして定義すると、thisは呼び出し元を指してしまいます。

オブジェクトを指すには、私が知っている知識だと以下の2つが考えられます。
・bind(this)を用いる
・setTimeoutのコールバック関数をアロー関数で囲む

毎回、thisが何を指すのか意識して使うより、常にオブジェクトを指してくれると楽だなと思います。

そこでお聞きしたいのは、コールバック関数でthisがオブジェクトを指してほしいときはどう書くのが適切でしょうか。

class App {
  constructor() {
    this.value = 'hello';
  }
  greet() {
    setTimeout(this.callback, 10);
  }
  callback() {
    console.log(this.value); // #=>thisはTimeoutを指すためundefined
  }
}

let app = new App;
app.greet();