7925


javascriptでオブジェクトのクラス名を知る方法を探していると`Object.prototype.toString.apply`で調べられることがわかりました。

そこで`jQuery`がクラス名を返すかどうか調べたところ`Object`が返ってきました。

[code]

    Object.prototype.toString.apply($("input[type=checkbox]"))
    "[object Object]"
    
[/code]

これはそういう仕様なのでしょうかそれとも調べ方が間違っていますか？

そもそもクラス名を調べてその動作をドキュメントで探そうとしたのですが、ドキュメントによるとselectorで値が複数のものも単数のものも返り値が`jQuery`になっていて調べる時の助けになりません。

javascriptで特定のオブジェクトの振る舞いを詳しく知りたいときにはどのような方法を取れば良いのでしょうか？

例えばRubyであれば「`object.class`でクラス名を調べて、そのクラスのドキュメントを参照する。」という方法が取れました。似た手段を取ろうとしたのですが上手くいきませんでした。


CC BY-SA 3.0
2015-03-14T19:10:42.293
7920
2015-03-16T12:23:11.987
3271
question
javascript jquery
jQueryのオブジェクトのクラス名の調べ方


`Object.prototype.toString.apply`
で返される文字列の２番目の部分がクラス名というわけですが、これは、あらかじめ用意されているオブジェクトのクラス名(kind of built-in
object : Object, Number,
String,Arrayとか)で、いわゆるユーザー定義のクラス名というのではないのでそういう(ユーザー定義の)ものはObjectに属すということになります。

ユーザ定義のクラスのオブジェクトの振る舞いはそのソースを調べなければわかりません。


CC BY-SA 3.0
2015-03-14T22:28:17.213
7925
2015-03-14T22:28:17.213
5044
7920
answer


JavaScriptにはそもそも「クラス」の概念が無いのですが、`new Hoge()`という形で関数を呼び出す「コンストラクタ呼び出し」はあります。  
クラスに近いのはこれですね。  
一応、下記のようにすれば、「コンストラクタ呼び出しによって作られたオブジェクトのコンストラクタ」を取得できます。  
`Function`オブジェクトなので、alertとかで表示すれば関数コードまるごと文字列で取れます。その関数に名前が付いていれば関数名（≒クラス名）も分かります。  
この名前で調べれば、ドキュメントに書かれてたりするかもしれないですね。

[code]

    function Hoge() {
    this.name = 'hogehoge';
    }
    
    var hoge = new Hoge();
    alert(hoge.constructor);
[/code]

なお、jQueryはどれもこれもjQueryオブジェクトなので、div要素だからとか、input要素だからといった条件でインタフェースが変わることはないです。  
中身によっては、呼んでも何も起きなかったりするだけです。  
ですので、jQueryの`$()`で取得したオブジェクトについては、jQueryのリファレンスを見てください。


CC BY-SA 3.0
2015-03-16T02:37:43.303
7955
2015-03-16T02:37:43.303
8078
7920
answer


Javascriptは、メソッドがオブジェクトに入りますので、  
オブジェクトが返ってくるのは挙動として正しいとおもいます。

オブジェクト内に格納されている値や関数を調べるイメージかとおもいます。

クラスをオブジェクトとして考えるべきかとおもいます。


CC BY-SA 3.0
2015-03-16T12:23:11.987
7982
2015-03-16T12:23:11.987
1062
7920
answer