我有一個包含css選擇器的樹結構,我的目標是從輸入元素中取得匹配選擇器的值,並將它們放到樹中。例如,如果<input type="text/>
帶有id文本框和值67,我想這樣做{selector:「#textbox」} - > {value:67}。爲什麼javascript/typecript將日期對象隱式轉換爲字符串?
我有這個工作在所有情況下,除了當輸入類型是日期。在這種情況下,我想將字符串轉換爲日期對象。我的代碼看起來像這樣
val = sel.val();
let type = sel.attr("type");
if(type == "number")
{
val = Number(val);
}
else
if(type == "date")
{
val = Date(val);
}
//#1
ast["value"] = val;
//#2
delete ast.selector;
在點#1,當輸入類型是日期時,val是Date對象。在#2點,ast [「value」]/ast.value也是一個Date對象。但是,打印整個ast對象會顯示ast [「value」]/ast.value作爲字符串。該字符串值通過代碼的其餘部分傳播並導致問題。這是從控制檯顯示此
Wed Jul 27 2016 10:14:19 GMT-0600 (MDT) eval.js:249 //ast["value"] at point #2
Object {selector: "this", value: "Wed Jul 27 2016 10:14:19 GMT-0600 (MDT)"} eval.js:250 //ast at point #2
如果日期並沒有獲得隱式轉換報價,輸出會
Wed Jul 27 2016 10:14:19 GMT-0600 (MDT) eval.js:249 //ast["value"] at point #2
Object {selector: "this", value: Wed Jul 27 2016 10:14:19 GMT-0600 (MDT)} eval.js:250 //ast at point #2
我在Chrome和Firefox,無論是產量測試此代碼相同的結果。
你確定這是一個字符串?可能只是一些控制檯功能/「功能」。 –
您可以隨時將其投射到日期。儘管'Date.prototype.toString' IIRC是依賴於實現的,只要你從平臺自己的字符串表示構造Date,你應該沒問題。 –
當它不是日期時,不要將它投射到日期!這只是在路上踢球。 –