いつもお世話になっています。
下記の質問についてご存知の方がいらっしゃいましたら、ご教示を願います。


【質問の主旨】

GitHubにUPしたコードではAnimalクラス内で条件文を使用しています。そのうち

if (!(this instanceof Animal)) {
    return new Animal(name);
}

上記のコードを使ってコンソール画面を表示させると、以下の結果が表示されます。

トクジロウ
Animal: トクジロウ
if (!(this === instanceof Animal)) {
    return new Animal(name);
}

一方、上記のコードを用いると下記のエラーが表示されます。

Uncaught SyntaxError: Unexpected token instanceof

両者の間において結果に差が出るのはなぜでしょうか?

【質問の補足】

1.

公式ドキュメントでinstanceofの用例を確認すると、

function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}

var auto = new Car('Honda', 'Accord', 1998);
console.log(auto instanceof Car);

という感じでinstanceof演算子の前に、オブジェクトを記述するという用例があります。ただし今回の質問で使っているthisについては特別に何かを定義している感じがしません。

2.

個人的な予測ですが今回の質問で使われているthisは、グローバルオブジェクトを表す特殊なキーワードではないかと推測しています。もしthisがグローバルオブジェクトであるならば、this === instanceof Animalとしても条件式として文法的に正しい表現をしていると思います。


以上、ご確認よろしくお願い申し上げます。