質問
お世話になっております。質問は以下になります。
JavaScript
1class Animal { 2 constructor(){ 3 console.log("neko"); 4 } 5} 6 7const animal = new Animal();
クラスによって生成されるインスタンスについて疑問なのですが、
上記のようなコードがあった際に、インスタンスの中身というのは
let animal = { Animal:()=>{ console.log("neko"); } }
この様に、
animalオブジェクトのなかにAnimalオブジェクトがあるということではないのでしょうか。
インスタンスの構造がどうなっているのかがわからないです。
試したこと
console.log(animal);でコンソールを確認しましたが、Animal{}となっておりました。
追記
animalというオブジェクトの中にAnimalというオブジェクトが入るのかと思っていたんですが、
あくまでもanimalという変数にAnimalオブジェクトがただ代入されているということでしょうか..?
オブジェクトを大量生成したいとき等にクラスを使うと習いましたが、そもそもオブジェクトとインスタンスというのは別物と捉えるべきでしょうか。
周りの方に同じような質問をしたところanimalオブジェクトの中にAnimalメソッドがあると思えといわれました。
腑に落ちなかった為、質問投稿に至っています。
基本的なクラスとインスタンスの概念に対する疑問ということでしょうか?
(もっともJavaScriptはプロトタイプベースなので、クラスベースの概念では説明しきれない)
生成されたインスタンスがどういった内容になっているのかが知りたい、としか言えないのですが、おかしな質問なのでしょうか?
「Animalというオブジェクト」とありますが、どのようなものを意図していますか?
まず前提としてインスタンスはオブジェクトだと思っています。
animalオブジェクトの中にAnimalオブジェクトというconsole.log("neko");を実行するものが入っているのか、ということなのですが、これが間違っていること質問内容にあります二つ目のコード欄のコードで同じ挙動にはならないので、分かっています。
であればanimalの内容はどのようになっているのか、という事が知りたいです。
> 周りの方に同じような質問をしたところanimalオブジェクトの中にAnimalメソッドがあると思えといわれました。
これ、誰が言ったか知りませんが、
勘違いしか生まない言い方ですね。
言葉が全然足らない 汗
「animalオブジェクトの中にAnimalメソッドがあると思え」が、
「animalオブジェクトの中にAnimalのメソッドがあると思え」ならば、正確な表現ではないけど、アリな言い方だと思いました。初心者にプロトタイプチェーンとか教えても混乱するし……
回答4件
あなたの回答
tips
プレビュー