• ベストアンサー

下記コードのようなオブジェクトとかprototypeとかを理解するヒントを教えてください!

<html> <head> <meta charset="utf-8"> </head> <body> <script type="text/javascript"> var hoge = function(){ //▼ function testFunc(n){ } testFunc.prototype.init = function(c){ alert(c); }// end func return{ testFunc:testFunc } }(); var u = new hoge.testFunc(); u.init("あああ"); </script> </body> </html> ---------------------------------------------------- ここ数日いろいろ弄っているのですが、 いまいちピンと来ない感じです。 何か、参考になるようなスクリプトやポイントなどありましたら、 ご紹介いただけると幸いです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

prototypeの考え方 たとえば極端だけど var Hoge = { func_0: function() { alert("a");/*コードが数千行でもいいよ*/ }, func_1: function() { alert("b"); }, //~ func_1000: function() { alert("?"); } //1000個の関数 }; var hoge_1 = new Hoge; var hoge_2 = new Hoge; //~ var hoge_1000 = new Hoge; と、大量にオブジェクトを作ったとする。 オブジェクトを作るたびに、ものすごいメモリーが必要だと思わない? Hogeの中に1000個の関数×1000個のオブジェクト。 ここで「メモリー = 風呂敷」とすると、かなり大きい風呂敷が沢山必要になる でも.prototypeを使うと、Hogeの中に目的の関数がないと .prototypeで後付けしたものを探すようになる。 これを利用して、Hogeの中に、関数なんて1個も置かない。 すると風呂敷は小さくて済む。 関数が必要になったとは、必要な部分だけ関数をコピーして、 あたかも風呂敷の中の関数のように振舞うように呼び出されている と考えてみれば?

その他の回答 (2)

回答No.2

ハードルは、たかいくらいがちょうどよいとおもってます。 やってることは、 var Hoge = function ( ) {  ; } Hoge.prototype.init = function ( c ) {  alert( c ); }; Hoge.testFunc = function ( ) {  return new this; }; var u = Hoge.testFunc(); u.init( "あああ" ); と、おんなじか? じぶんでは、こっちのほうが、りかいしやすい。 というかこのていどです。すんません。

reggaepunc
質問者

お礼

うーん。。 いろんな書き方があって迷ってしまいますね。 一見同じコードに見えてしまう。。 もう少し弄って慣れてみます!ありがとうございます!

回答No.1

いきなりこんな複雑なコードを理解しようというのが間違いでは? http://www.tohoho-web.com/js/object.htm http://www.tohoho-web.com/js/function.htm

reggaepunc
質問者

お礼

複雑なコードだったんですね。。 それすらも判断つかなかったです。 とほほさんで訓練します! ありがとうございます!