2016-07-27 4 views
2

CSS 선택기가 포함 된 트리 구조가 있습니다. 제 목표는 선택기와 일치하는 입력 요소의 값을 트리에 넣는 것입니다. 예를 들어 id 텍스트 상자와 값 67이있는 <input type="text/>이있는 경우이 {selector : "#textbox"} -> {value : 67}과 같은 작업을 수행하려고합니다.javascript/typescript가 암시 적으로 날짜 객체를 문자열로 변환하는 이유는 무엇입니까?

입력 유형이 날짜 인 경우를 제외하고 모든 경우에이 기능이 작동합니다. 이 경우 문자열을 날짜 객체로 변환하려고합니다. 내 코드는 다음과 같습니다.

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; 

입력 유형이 날짜 일 때 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 

것 같은 결과.

+2

확실한가요? 콘솔 기능/"기능"일 수도 있습니다. –

+0

항상 날짜로 전송할 수 있습니다. Date.prototype.toString' IIRC는 구현에 따라 다르지만, 플랫폼의 자체 문자열 표현에서 Date를 구성하는 한 괜찮습니다. –

+0

날짜가 아닐 때 날짜로 캐스팅하지 마십시오! 그것은 단지 길을 걷어차는 것뿐입니다. –

답변

4

Date() 함수는 숫자 또는 문자열을 사용하여 문자열을 생성합니다. Read the documentation :

자바 스크립트 일 개체 생성자로서 자바 스크립트 날짜 호출 만 인스턴스화 될 수있다 (새로운 조작없이, 즉) 일반 함수로 호출 날짜 오브젝트가 아닌 문자열을 반환한다; 다른 자바 스크립트 객체 유형과는 달리, 자바 스크립트 Date 객체는 당신은 아마이 같은 new Date(val) 대신 Date(val) 실제로 Date 객체를 만들어 사용하려면 더 리터럴 구문을

이 없습니다.

+0

날짜 기능은 [* zero *] (http://www.ecma-international.org/ecma-262/6.0/#sec-date-constructor-date)에서 [* 7 *] (http : /www.ecma-international.org/ecma-262/6.0/#sec-date-year-month-date-hours-minutes-seconds-ms) 인수. 비헤이비어는 몇 개 및 어떤 유형 (하나만 제공된 경우 문자열, 숫자 또는 날짜 일 수 있음)에 따라 변경됩니다. – RobG

관련 문제