日期原型属性

时间:2012-08-29 10:45:46

标签: javascript

当我更深入地进入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 Object失败了。 你能告诉我测试Date prototype属性的代码有什么问题吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

当您将Date.prototype传递给document.createTextNode()时,它会隐式调用传递的对象上的toString()

toString()的默认输出为[object Object],如第二次测试中所示。

但是Date.prototype自己的 toString()函数,其目的是将当前Date对象(即this)作为文本返回。< / p>

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"输出。

答案 1 :(得分: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.