1

document.write()メソッドとwindow.alert()配列とオブジェクトを印刷するときの違いは何ですか?

このコード サンプルでは、​​さまざまな動作が示されています。

var arr = new Array("Maizere","Pathak");

document.write(arr); // output: Maizere,Pathak
alert(arr); // output: maizere,pathak

両方とも値を出力しているのはなぜですか? alert()印刷すべきではありませんObject Objectか?

DOM オブジェクトを使用すると、[オブジェクト HTML コレクション] が出力され、ここでは値が出力されます。

4

4 に答える 4

2

JavaScript のオブジェクトにはtoStringメソッドがあります。このメソッドは、テキストが期待される方法でオブジェクトが使用されるたびに呼び出されます。たとえば、次の出力[object Object]:

alert({});

toString配列には、まったく異なることを行う独自のバージョンのメソッドがあります。タイプを表示するのではなく、コンマで結合して内容を表示します。toString必要に応じて、配列メソッドを置き換えることができます。

var names = ['Jonathan', 'Sampson'];

names.toString = function () {
    return this.length;
};

alert(names); // Outputs 2

必要に応じて、他のtoString実装も使用できます。

document.toString.call(names); // [object Array]

詳細についてはtoString、MSDN の を参照してください。

于 2013-04-20T02:07:15.957 に答える
1

alertとの両方document.writeがメソッドで動作するように設定されています.toString()。タイプ のインスタンスの場合object、これは通常、 を出力し[object Object]ます。ただし、Array クラスは、配列の内容を出力するためにこのメソッドをオーバーロードしています。これが事実であることを示すためにやってみてくださいarr.toString()。オブジェクトを作成して toString メソッドを与えると、アラートが呼び出されます。例えば:

var obj = {};
obj.toString = function() { return "I'm an Object!"; }
alert(obj);

"I'm an Object!" という文字列を含むアラートが表示されます。初期化。

于 2013-04-20T02:11:11.480 に答える