0

Javascript にもう少し深く飛び込んでいるので、テストを試みたときにこの奇妙な結果が得られました。

function CustomeObject() {
    this.type = "custom";
};
var node1 = document.createTextNode(Date.prototype);
var node2 = document.createTextNode(CustomeObject.prototype);

document.getElementsByTagName("body")[0].appendChild(node1);
document.getElementsByTagName("body")[0].appendChild(node2);

そして、結果は次のとおりです。

無効な日付 [オブジェクト オブジェクト]

インターネットのある情報源から読んだところによると、プロトタイプは任意のオブジェクトの組み込みプロパティであり、実際にはオブジェクト自体です。しかし、このテストは Date オブジェクトで失敗しました。Dateプロトタイプ プロパティをテストするコードの何が問題なのか教えていただけますか? ありがとうございました!

4

2 に答える 2

1

に渡すDate.prototypeと、渡されたオブジェクトdocument.createTextNode()が暗黙的に呼び出さtoString()れます。

2 番目のテストで見られるように、のデフォルトの出力はtoString()です。[object Object]

ただし、現在のオブジェクト (つまり) をテキストとして返すことを目的とする独自の関数がありDate.prototypeます toString()Datethis

var now = new Date();
console.log(now.toString()); // outputs current date
console.log(now);            // does the same due to implicit toString() call

その関数を直接呼び出すと、ポインタに日付オブジェクトの代わりにthis誤って含まれているため、出力が発生します。Data.prototype"Invalid Date"

于 2012-08-29T10:49:24.900 に答える
0

なぜなら、 を返すDate.prototypeオブジェクトだからです。.toString()Invalid Date

var d = Date.prototype;
console.log(d); // will output 'Invalid Date', because the object doesn't have any date info.
d.setFullYear(2012);
console.log(d); // will output the date string.
于 2012-08-29T10:50:59.103 に答える