변수가 Moment.js 객체인지 테스트하는 방법은 무엇입니까?


93

내 응용 프로그램에는 백엔드에서 채워진 일부 입력과 사용자가 입력하는 다른 입력이있는 HTML 양식이 있습니다 ( time입력에서). onChange사용자가 값을 변경하면, 각 기능 입력을 통해 실행.

백엔드에서 채워진 입력은 moment객체 로 변환되고 사용자가 입력 한 날짜는 단순한 문자열입니다. 이것은 onChange함수가 일부 moment객체와 일부 문자열을 만남을 의미합니다 . 어떤 입력이 moment객체 인지 아닌지 알아야 합니다.

변수가 moment객체 인지 테스트하는 데 권장되는 방법은 무엇입니까 ?

내가 발견 한 moment개체가이 _isAMomentObject속성을하지만 변수가 있는지 테스트 할 다른 방법이 있는지 궁금하네요 moment객체입니다.

내가 시도한 또 다른 옵션 moment은 변수에 관계없이 호출 하는 것입니다. 이것은 string변수를 moment객체 로 변환하고 기존 moment객체 에 영향을 미치지 않는 것 같습니다 .

답변:


98

Moment에는 그러한 목적을위한 isMoment방법 이 있습니다. 무엇을 찾아야할지 모르면 문서에서 찾기가 특히 쉽지 않습니다.

먼저 속성 instanceof을 테스트 할 것인지 (예를 들어 특정 서브 클래 싱 또는 교차 영역 상황에서) 확인한 다음 실패합니다 _isAMomentObject.


강력하게 입력하지 않으면 어떻게됩니까? moment.isMoment (input);
Don Thomas Boyle

3
@DonThomasBoyle 이것은 JavaScript입니다 : 강력한 타이핑이 없습니다. 'Strong'은 타이핑에 대한 일종의 모호한 용어이지만 거의 모든 가능한 정의 (아마도 메모리 안전성 제외)에 의해 JS 유형은 약합니다. 폭발을 일으킬 수있는 유일한 방법은 if inputis null또는 undefined, 말 그대로 null이 아닌 JS 객체 또는 기본 값조차도 부울을 반환하는 것입니다.
Jared Smith

35

instanceof순간 인지 확인할 수 있습니다 .

moment() instanceof moment; // true

6
인스턴스와 모멘트 자체가 동일한 창에있는 경우에만.
JAAulde

2
moment ()는 항상 moment 객체를 생성하기 때문에 이것은 항상 사실입니다. 대신 "obj instanceof moment"를 의미 했습니까? ?
NoBrainer 2018

instanceof 사용의 위험은 인스턴스가 한 순간 종속성에서 생성 될 수 있지만 다른 종속성의 moment 함수에 대해 테스트된다는 것입니다. 즉, 순간 객체를 생성 한 코드가 테스트하는 코드가 아닌 다른 생성 기능을 사용하면 중단됩니다. 이러한 상황이 발생할 수있는 예는 위의 테스트를 실행하는 코드가 다른 버전의 moment에 의존하는 별도의 npm 패키지에있는 경우입니다.
Henrik Hansson

3

moment () instanceof moment;

항상 사실이 될 것입니다.

  • moment (undefined) instanceof moment
  • moment ( "hello") instanceof moment

당신은 항상 순간 객체를 만들고 있습니다. 그래서 유일한 방법은 이렇게 확인하는 것입니다

  • moment (속성) .isValid ()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.