今天剛剛偶然發現了這一點,我無法找到規範中定義的行爲。爲什麼追加一個字符串到Date調用toString()而不是valueOf()?
追加一個JavaScript字符串對象(即new Object() + "whatever"
)通常觸發對象上valueOf()
一個電話,但顯然,Date對象是一個例外: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對象有什麼不同?
你是怎麼做到這個代碼片段的東西? – 2014-10-26 17:12:17
@超鏈接:查看編輯面板以在下面插入答案。有一個按鈕。 – 2014-10-26 17:16:20
看起來你可以從這裏獲得一個[snippet console](http://meta.stackexchange.com/questions/239706/add-a-console-to-stack-snippets)。 – Scimonster 2014-10-26 17:19:55