当我更深入地进入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属性的代码有什么问题吗? 谢谢!
答案 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.