質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

7302閲覧

JavaScriptのオブジェクト指向、クラスとオブジェクトの違いについて

kamecha

総合スコア41

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2017/04/16 11:46

編集2017/04/16 11:59

###前提
現在JavaScriptを独学しているのですが、
オブジェクト指向について、分からなくなったため、質問しようと思います。
エラーとかの質問ではなく、概念?の質問のため、この場で質問して良いのか分かりませんが、出来るだけ理解したいのでよろしくお願いします!

###質問

オブジェクト指向で・・・
プロパティは、オブジェクトの属性で、メソッドは、オブジェクトの操作(関数)を意味していることは分かるのですが、
クラスインスタンスがよく分かりません。
書籍で調べると、
クラス:オブジェクトに共通する性質をまとめて定義した雛形
とあるのですが、どういう事なのでしょうか?
オブジェクトとはどう違うのでしょうか。

また、それらについて調べるとコンストラクタというのも出て来ました。
この性能は、ビルトインオブジェクトと似ているので
コンストラクタは自分で、ビルトインオブジェクトを作成するという感じのとらえ方で良いのでしょうか?

###補足情報
学習している書籍は独習JavaScriptです。
簡単なコードを作成していただけるとありがたいです。
又、自分は理解力が少ないと思うので・・・はい、そういうことです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2017/04/16 11:52 編集

クラス? JavaScript に間違いありませんか? Java でなくて? 初心者向けのテキストですよね?
kamecha

2017/04/16 12:03

書籍によると、JavaScriptはクラス定義の構文がないそうです。それでも、クラス?については理解しておきたいのです。初心者マークは、付け忘れです。
Zuishin

2017/04/16 12:07

クラス定義の構文はあります。おそらくその書籍は書かれた時期が古いのでしょう。ただ、プロトタイプチェーンを使ってクラスのような振る舞いをするコードを書くことも可能なので、このあたりをはっきりさせておかないとドツボにはまると思います。クラスについて調べるなら JavaScript はノイズが多いので不向きです。
kamecha

2017/04/16 13:19

有り難うございます!書籍だけに頼ろうとしては、いけませんね
kamecha

2017/04/16 13:28

調べてみると書籍は2013年発行でした。古いですね・・・
guest

回答1

0

ベストアンサー

クラスとかインスタンスっていうのはクラスベースのオブジェクト指向言語の単語ですね。javascriptでは別の方法でオブジェクト指向を実現しているため、わからないもなにもそもそもjavascriptにクラス・インスタンスって考え方はないよっていう回答が正解になるのではないかと思いますが、それだと意味不明なままだと思いますので分かる範囲で解説しますね。

そもそも、オブジェクト指向の考え方を実際に実現する方法の違いってのがあり、javaのようなクラスベースの言語と、javascriptのようにプロトタイプベースの言語が存在しています。

誤解を恐れず簡単に書くと
オブジェクト指向:プログラムを物質的なモノ(状態と機能を持つ)と同じように扱う。修理とか改修とかのプログラムの管理を楽ちんにするのが目的
クラスベース言語の世界:クラスという設計図を元にインスタンスというオブジェクトをつくる
プロトタイプベース言語の世界:オブジェクトのコピーとして新しいオブジェクトをつくる
です。

コンストラクタはクラスベース言語の世界だとクラスからインスタンスをつくるメソッドで、javascriptだと関数(関数もオブジェクト)からオブジェクトを作成するメソッドです。javascriptだとコンストラクタの意味が変わります。

気を悪くしないでほしいのですが、ご質問が大富豪でフルハウスについて聞いている状態です。ゲーム(言語)が違います。

投稿2017/04/16 12:50

編集2017/04/16 12:52
oskbt

総合スコア1895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamecha

2017/04/16 13:27

なるほど、良く分かりました。 ひとえにオブジェクト指向と言っても、様々な違いがあるのですね。 Javaと混合しないように、これから勉強します。
ku__ra__ge

2017/04/16 13:57

javascriptにクラスは存在しませんが、ECMAScript2015(javascriptの言語仕様)からはクラスを定義できるかのように見えるclass構文が存在します。 class構文は見た目がクラス言語風のコードが書けるだけで、実際にはクラスを作成しません。作成されるのは関数オブジェクトです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問