いつもお世話になっています。
下記の質問についてご存知の方がいらっしゃいましたら、ご教示を願います。
【質問の主旨】
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
としても条件式として文法的に正しい表現をしていると思います。
以上、ご確認よろしくお願い申し上げます。