【发布时间】:2014-10-26 17:00:17
【问题描述】:
今天偶然发现了这一点,我找不到规范中定义此行为的位置。
将字符串附加到 JavaScript 中的对象(即new Object() + "whatever")通常会触发对对象的valueOf() 调用,但显然,日期对象是此规则的一个例外:new Date() + "..." 调用toString()改为日期。
function test(constructor)
{
var name = constructor.name || /^\s*function ([\w\$]+)/.exec(constructor.toString())[1];
var obj = new constructor();
obj.toString = function () { return name + ' : toString()'; }
obj.valueOf = function () { return name + ' : valueOf()'; }
document.body.appendChild(document.createElement('DIV')).textContent = obj + '';
}
test(Array);
test(Boolean);
test(Date);
test(Function);
test(Number);
test(Object);
test(RegExp);
test(String);
问题:这里的 Date 对象有什么不同?
【问题讨论】:
-
你是怎么完成这个代码 sn-p 的事情的?
-
@Ultra:查看编辑面板以在下面插入答案。有一个按钮。
-
看来你真的可以从这里的snippet console 中受益。
标签: javascript