質問: ### 前提 現在JavaScriptを独学しているのですが、 オブジェクト指向について、分からなくなったため、質問しようと思います。 エラーとかの質問ではなく、概念?の質問のため、この場で質問して良いのか分かりませんが、出来るだけ理解したいのでよろしくお願いします! ### 質問 オブジェクト指向で・・・ プロパティは、オブジェクトの属性で、メソッドは、オブジェクトの操作(関数)を意味していることは分かるのですが、 **クラス**と**インスタンス**がよく分かりません。 書籍で調べると、 クラス:オブジェクトに共通する性質をまとめて定義した雛形 とあるのですが、どういう事なのでしょうか? オブジェクトとはどう違うのでしょうか。 また、それらについて調べると**コンストラクタ**というのも出て来ました。 この性能は、ビルトインオブジェクトと似ているので コンストラクタは自分で、ビルトインオブジェクトを作成するという感じのとらえ方で良いのでしょうか? ### 補足情報 学習している書籍は独習JavaScriptです。 簡単なコードを作成していただけるとありがたいです。 又、自分は理解力が少ないと思うので・・・はい、そういうことです。
回答: クラスとかインスタンスっていうのはクラスベースのオブジェクト指向言語の単語ですね。javascriptでは別の方法でオブジェクト指向を実現しているため、**わからないもなにもそもそもjavascriptにクラス・インスタンスって考え方はないよ**っていう回答が正解になるのではないかと思いますが、それだと意味不明なままだと思いますので分かる範囲で解説しますね。 そもそも、オブジェクト指向の考え方を実際に実現する方法の違いってのがあり、javaのようなクラスベースの言語と、javascriptのようにプロトタイプベースの言語が存在しています。 誤解を恐れず簡単に書くと オブジェクト指向:プログラムを物質的なモノ(状態と機能を持つ)と同じように扱う。修理とか改修とかのプログラムの管理を楽ちんにするのが目的 クラスベース言語の世界:クラスという設計図を元にインスタンスというオブジェクトをつくる プロトタイプベース言語の世界:オブジェクトのコピーとして新しいオブジェクトをつくる です。 コンストラクタはクラスベース言語の世界だとクラスからインスタンスをつくるメソッドで、javascriptだと関数(関数もオブジェクト)からオブジェクトを作成するメソッドです。javascriptだとコンストラクタの意味が変わります。 気を悪くしないでほしいのですが、ご質問が大富豪でフルハウスについて聞いている状態です。ゲーム(言語)が違います。