• ベストアンサー

Array.valueOf/toString

Array オブジェクトの valueOf / toString メソッドは JavaScript ではあまり必要性がないように感じるのですが、実際にどのような使い方がされているのでしょうか。わたしのレベルではたとえばdocument.write(myArray)などで出力するのも myArray.toString() / myArra.valuOf()も変わらないのでなんでかな、とおもいます。

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

valueOf / toString メソッドは 同様にデフォルトとして使われ結果も同じものとなる場合が多いですが、 そのときのコンテキストに応じて、文字列以外の基本型に変換する必要のあるときは    valueOf() が呼び出されます。 >>> document.write(myArray) では、toString()が呼び出されているわけです。 valueOf / toString メソッドは ともに自分用にオーバーライドして、活用すべきものです。 valueOf()は、本来何もせずに、そのオブジェクト自体を返します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ArrayクラスとtoStringについて

    問題集で次のプログラムを見掛ました。 public class Main{  public static void main(String args[]){   int[] array = new int[0];   System.out.println(array);  } } これを実行するとprintlnメソッドで toStringメソッドが呼び出されますが、 ArrayクラスはObjectクラスを継承しているため、 toStringメソッドもObjectクラスから継承されているので、 結果として、配列の要素数が0であっても、 エラー等が発生せずハッシュコードが表示される、ということです。 ObjectクラスのtoStringメソッドが ハッシュコードを返すものであるのは理解できます。 でも、なぜ要素数が1以上で何かしらの要素が存在する場合は、 ハッシュコードが返らないのでしょうか? 詳しい方、解説をお願いします。

  • toString()メソッドについて

    ある本に、 ------------------------------------------------------------------------- System.out. println(car1); 特に何も準備せずに上のコードを記述すると、Objectクラスから継承したtoString()メソッドが呼び出されます。 そしてこのtoString()メソッドの戻り値となっている「Car@数値」という文字列が画面に出力されるようになっているのです。 ------------------------------------------------------------------------- と書いてありましたが、toString()メソッドの戻り値となっている「Car@数値」という文字列が画面に出力とはいったいどういう意味でしょうか?

    • ベストアンサー
    • Java
  • JavaScriptでArrayオブジェクトもどきの独自オブジェクトを作りたい!

    お世話になります。 JavaScriptを用いて、ある条件の下でArrayオブジェクトのような独自オブジェクトを定義したいのですが、ゆっくり調べている時間がなく、こちらの方を頼らせていただくことにしました。 【やりたいこと】 Arrayオブジェクトのような独自オブジェクトを定義したい。 【やりたいことの条件】 条件1: Arrayオブジェクトが戻り値として返ってくる既存の関数があり、その戻り値であるArrayオブジェクト自身を新たなオブジェクトとして定義したい。 この関数は、 ・Arrayオブジェクトの要素とは全く無関係の引数をとる。 ・この関数の仕様を変更することはできない。 という特徴があります。 条件2: 独自オブジェクトを作る際の引数は、上述の既存の関数の引数と同じ。 【サンプル】 上記の説明では、少々わかりにくいかもしれませんので、使い方のサンプルを以下に示します。 既存の関数: function immovableFunc(param1, param2) { var myArray = new Array; … return myArray; } 今回作りたいオブジェクト: PseudoArray 今回作りたいオブジェクトの使われ方: var pa = new PseudoArray(param1, param2); そもそも、このようなオブジェクトが作れるのか?、作れるとするならばどのように記述するのか?見当も付かない状態です。 皆さんのお知恵を拝借させていただければと思います。 どうぞ、よろしくお願いいたします。

  • プログラミングで困っています。

    メインメソッドで、 MyArray array = new MyArray(10); // サイズ10の配列をつくります。 を実行したとします。クラス MyArrayは配列にObjectを挿入、削除できるメソッド(add()とdelete())、+その他を追加したものです。 MyArrayクラスの中から、arrayを他のクラスに返すメソッドを作ることはできるんでしょうか?arrayの配列だけを返すのでなくて、MyArrayであるarrayそのものを返したいのですが、どうすればいいでしょうか。 理由は、他のメソッドから、arrayの配列に行われたadd()とdelete()の回数をモニターする必要があるからです。 *add()とdelete()には、呼ばれるたびに、int counterを1ずつ増やすようにしています。counterの数の変化によってarray配列が変化したかどうかモニターするわけです。

  • c#のToString()メソッド

    http://msdn.microsoft.com/ja-jp/library/ms173154(v=vs.90).aspx のページによると C# では、すべてのオブジェクトが ToString メソッドを継承します。このメソッドは、該当するオブジェクトの文字列形式を返します。たとえば、int 型の変数はすべて ToString メソッドを持ち、次のようにその変数の内容を文字列として返すことができます ↑と書いてあるのですが、C言語しか知らない自分にとってint型の変数が関数、メソッドを持つ、 という概念が理解できません。これはオブジェクト指向の話なのでしょうか?クラスを理解すると わかるようになりますか? どなたかよろしくお願いします。

  • Enumのname()とtoString()の違いについて

    J2SE5.0から追加されたEnumを使ってみようと勉強中です。 Enumの要素の識別名を取得するためのメソッドとしてname()とtoString()の2つがありますが、違いは何なのでしょうか? APIドキュメントによると『name()よりtoString()を使う方がいい』というようなことが書かれていますが、その理由がわかりません。 同じくAPIドキュメントに『toString()はユーザフレンドリな値を返す』という記述があって、これの意味もよくわからず悩んでいます。。。 どなたか、ご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Arrayオブジェクトのsort()メソッド

    テキストに書いているArrayオブジェクのsort()メソッドを実行しました。 ソースコードは以下のとおりです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> <title>Arrayオブジェクトのメソッド</title> <script type="text/javascript"> </script> </head> <body bgcolor="#FFFFFF"> <p style="font-size:200%"> <script type="text/javascript"> var ages = new Array(4, 6, 10, 24, 1, 11, 40); ages = ages.sort(); document.write(ages.join(" > ")); </script> </p> </body> </html> すると、ブラウザにこのように表示されました。 (ちなみに > は矢印記号で大小を比べるものではありません。) 1 > 10 > 11 > 24 > 4 > 40 > 6 これを見る限り数字の順番が変わっています。 テキストでは、これを「文字列として昇順に並び替えた」と書かれているのですが、私の知識の足りなさから意味がよく分かりません。 ただ、昇順の意味は分かっているつもりです。 もし、昇順に並び替えるのなら、 1 > 4 > 6 > 10 > 11 > 24 > 40 のようになるのではないでしょうか。 頭の悪い私のために是非ともアドバイスを頂ければ大変助かるのですが。 どうぞ宜しくお願い致します。

  • Arrayオブジェクトとforms配列

    以下のスクリプトを実行すると、(2)の所で「document.forms.GetFromArray is not found」 のエラーとなります。(ブラウザはFirefox)。 意図としてはArrayオブジェクトをカスタマイズして追加したGetFromArray()メソッドでforms配列を操作したいのですが... エラーメッセージからすると、「document.formsは配列(Arrayオブジェクト)では無い」と言っているようです。 この方法でforms配列を参照する方法を教えて下さい。 あるいは、Arrayオブジェクトではない、他のオブジェクトをカスタマイズするのでしょうか?お願いします。 <html> <head> <script type="text/javascript"> <!-- Array.prototype.GetFromArray=function(func){ for(var i=0;i<this.length;i++){ func(this[i]); } } function disp1(h){ alert(h); } function disp2(h){ alert(h.name); } function run(){ var array=new Array('dog','cat','fish'); array.GetFromArray(disp1); //(1) OK document.forms.GetFromArray(disp2); //(2) エラー } //--> </script> </head> <body> <form name="test"> <input type="text" name="bunrui" value="分類">/ <input type="text" name="detail" value="詳細">/ <input type="button" value="実行" onClick="run();"> </form> </body> </html>

  • js array -1

    javascriptのソースコードの引用なのですが <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>サンプル</title> </head> <body> <script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script src="fastclick.js"></script> <script> function print(str){ document.write(str + "<br />"); } document.write("<p>"); var ary = new Array("東京", "大阪", "名古屋"); for (var i = 0 ; i < ary.length ; i++){ print("array[" + i + "] = " + ary[i]); } document.write("</p>"); document.write("<p>"); try{ var ary2 = new Array(-1); }catch(e){ print(e); } document.write("</p>");</script> </body> </html> 30行目try文の中の「 var ary2 = new Array(-1); 」なのですがnewで初期化をしているという事は何となく理解できるのですが 引数で-1を指定しているのですが-1を指定する意味は何かあるのでしょうか?

  • 初歩的なことなんですけど

    配列で例えば100個変数を表示するとしたら以下になると思うんですけど。 for ( cnt=0; cnt>100; cnt++){    document.write(myArray[cnt]; } お聞きしたいのは、document.writeのところで、myArrayと書かれているんですけど、document.write(Array[cnt];ではだめなのでしょうか? それとも好きな名前をつけられるんでしょうか?最近勉強したばかりで、このあたりの説明が書かれてないので、ご説明よろしくお願いします。