あなたの質問に簡単に答えるには、はい、thisUsefulThing は thatUsefulThing にアクセスできます
しかし、あなたのコードが現在実行されているように、'this' は実際にはグローバルではなく、すべての直接の子孫自体への somethingUseful への参照です。
リテラル オブジェクトを扱うときは、通常、「this」ではなく名前で参照するので、あなたの場合は「this.thatUsefulThing()」を somethingUseful.thatUsefulThing() に置き換えます。
なんで?とにかく、それはグローバルに機能するからです!
編集:
plalx が私の回答へのコメントで指摘したように、このクラスを実装するためのベスト プラクティス (クラス メンバーの例を使用) は、機能クラス/プロトタイプを使用し、次のようになります。
function SomethingUseful () {
this.member = 'I am a member';
}
SomethingUseful.prototype.thisUsefulThing = function () {
this.thatUsefulThing();
}
SomethingUseful.prototype.thatUsefulThing = function () {
console.log('I am useful, and ' + this.member);
}
usefulObject = new SomethingUseful();
usefulObject.thisUsefulThing(); // logs fine with access to this.member
setInterval(usefulObject.thisUsefulThing.bind(usefulObject), 1000); // has access to this.member through bind()