
No.3ベストアンサー
- 回答日時:
javascriptではクラス(のようなもの)はプロトタイプを使用します
おそらくjavascriptでオブジェクト指向を学習する人にとっては
最初はなんのことだか訳が分からないと思います
プロトタイプは簡単にいうと関数の中でthisという変数を使用する際に
関数のprototypeのメンバに設定した値や関数を使用出来るって言うだけです
それ以外に普通の関数のように振る舞います。
これだけでオブジェクト指向っぽい事をクラスを使用しないで実現可能にしています
このthisの指しているオブジェクトを把握する事がjavascriptでオブジェクト指向を理解するのが
一番の近道です。
ただクラスとかインスタンスとかの名称がオブジェクト指向で一般化しているので
整理する際には、プロトタイプ=クラス、プロトタイプをnewしたもの=インスタンスとして
普通に会話していても通じる場合が多いと思います。
javascriptの場合のnewは、thisの参照先を新しく作成して使用する意味のnewです
さて
質問の同じ意味になるかというと、無名関数であることをのぞけばほぼ同じなのですが
通常は var Hoge = function Hoge () {}; と記述する方が混乱はないと思います
またこのときに、var h = new Hoge()とインスタンス(みたいなもの)を作成した際に
h.constructor.nameでHogeの名称(クラス名みたいなもの)が確認出来るようになるので(おそらくIEはのぞく)
出来るだけ関数名はつけた方がデバッグが簡単になります
No.2
- 回答日時:
>クラスを定義したことになるのでしょうか?
あなたがそれをクラスのように使うのならクラスだし
今のままならただの空っぽの関数です
それでもあなたが強く言い張ればクラスになるかもしれません
要はES5までのJSにクラス文はないので
クラスとは完全に概念で、考え方、見方の問題であるということです
例えばあるオブジェクト達に共通のメンバを設定したければ
ES6になりますが__proto__セッターに同じオブジェクトを与えるのでもできます
その場合そのオブジェクトはただのオブジェクトですが
コンストラクタを持たないクラスであると見れると思います
この回答へのお礼
お礼日時:2013/08/01 21:31
回答ありがとうございました。
>あなたがそれをクラスのように使うのならクラスだし
>今のままならただの空っぽの関数です
>それでもあなたが強く言い張ればクラスになるかもしれません
>要はES5までのJSにクラス文はないので
>クラスとは完全に概念で、考え方、見方の問題であるということです
説明分かりやすかったですー
No.1
- 回答日時:
Javascriptにクラスという概念はありません。
>Hogeクラスを定義したことになるのでしょうか?
なりません。関数リテラルをHogeに代入しただけです。
http://www.ajaxtower.jp/js/function/index5.html
JavaScriptでクラスっぽい事をするならプロトタイプかな。
http://www.slideshare.net/yuka2py/javascript-237 …
まあ、何を実現したくてクラスを使うのかにもよりますけど。ゲームならEnchant.jsを導入すればよい話ですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスのマウスホイー...
-
main()を持つクラスが2つ以上...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
どこからも呼ばれていない無意...
-
UMLのクラス図はmain()も含むん...
-
クラスの行数は?
-
EclipseでJSPのコンパイルエラー
-
そんなにお金がなくても年に1度...
-
IPアドレスの3バイト目の呼び方
-
dllと同じプロジェクトにする方法
-
内部クラスを別ファイルに
-
ドキュメントクラスの取得方法
-
複数のクラスで共通した関数を...
-
共通で使う関数を集めたクラス...
-
スレッドセーフな構造体の作り方
-
同一パッケージにあるクラスが...
-
同じクラスにならない確率を教...
-
3年間同じクラスになる確率
-
僕の出身中学校は200人同級生が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java eclipse 型に解決できません
-
どこからも呼ばれていない無意...
-
EclipseでJSPのコンパイルエラー
-
そんなにお金がなくても年に1度...
-
複数のクラスで共通した関数を...
-
恋愛
-
dllと同じプロジェクトにする方法
-
UMLのクラス図はmain()も含むん...
-
僕の出身中学校は200人同級生が...
-
配列の重複する値とその個数を...
-
同一パッケージにあるクラスが...
-
IPアドレスの3バイト目の呼び方
-
標準モジュールとクラスモジュ...
-
main()を持つクラスが2つ以上...
-
eclipse でクラスに色
-
共通で使う関数を集めたクラス...
-
VBAもしくはVB6:クラスの中で...
-
Cstring(日本語含む)をcharに...
-
IPアドレスのクラスAを取得して...
-
コンボボックスのマウスホイー...
おすすめ情報