3

Javascript を書いているときは、window.alert() を使ってデバッグしています。通常、アラートに変数を渡すと、その変数の値を含む文字列がポップアップ表示されます。ただし、アラートをオブジェクトに渡すと、オブジェクトのタイプがわかります。例えば:

var form = document.getElementById("my_form");
alert(form); // returns [object HTMLFormElement]

そのビット、[object blah blah] と書かれている部分です。それは何の財産ですか?最近、作業中のサイトの有用な部分をカプセル化するために独自のオブジェクトを作成し始めました...しかし、独自のオブジェクトをアラートに渡すと、一般的なメッセージ [object Object] が表示されます。さまざまな種類のオブジェクトを作成しました。たとえば、オブジェクトが [object My_Object] の行に沿って何かを返すことを好みます。

関数 My_Object() で設定できるプロパティはありますか?アラートに伝えたいことを伝えますか?

ありがとう!

z。

4

3 に答える 3

6

toString()メソッドを上書きする必要があります。それ以外の場合Object.prototype.toStringは が使用され、 が返されます"[object Foo]"。ここFooで、 はオブジェクトの内部 (つまり、アクセスできない) クラス プロパティの値です。

于 2010-01-17T23:47:47.870 に答える
4

クラス プロトタイプの "toString()" を再定義してみてください。これは、オブジェクトの文字列型を作成するために使用されます。デフォルト[object <type>]は ですが、それはあなたが望むものではありませんね。

ただし、「作成したカスタム オブジェクトに対してこのメ​​ソッドをオーバーライドできます。カスタム オブジェクトで toString をオーバーライドしない場合、toString は を返します[object type]。ここで、type はオブジェクト タイプまたはオブジェクトを作成したコンストラクタ関数の名前です。」、http ://www.synchro.net/docs/js/ref/object.html#1193350

于 2010-01-17T23:50:03.240 に答える
2

alert() を使用してデバッグする代わりに、優れた Web 開発ツールであるFirebugを調べて、より優れた HTML インスペクション、JavaScript デバッグ、およびその他の機能を利用する必要があります。

于 2010-01-20T05:41:10.780 に答える