2016-10-31 1 views
2

유형 유형으로 전달되는 생성자 함수가 필요합니다. Object은 아무 것도 상속하지 않으므로 아무 것도 허용하지 않으므로 사용할 수 없습니다. https://developer.mozilla.org/en-US/docs/Web/API/CoordinatesJavaScript로 직접 Coordinates 생성자에 액세스하려면 어떻게해야합니까?</p> <pre><code>props: { coords: { type: Coordinates, required: true, }, }, </code></pre> <p>나는 <code>Coordinates</code> 생성자를 찾는 방법을 작동하지 않을 수 있습니다 뷰에서 확인

어떤 아이디어 :

직접 액세스하는 방법에 대한 MDN에 아무것도?

편집 : 명확히하기 위해 window.Coordinates은 정의되지 않았습니다. 위의 코드 예제는 작동하지 않습니다.

+1

mdn이 인터페이스라고 말하면 구현의 프로토 타입을 찾는 것이 좋습니다. –

+0

@ 潘俊杰 : 그건 내가 묻고있는거야. 나는 그것을 발견 할 수 없다. – callumacrae

답변

2

Coordinates아니요. 웹 개발자가 사용하기 위해 브라우저에 표시되는 항목입니다. 그것은 지리적 위치 기능을 구현하는브라우저 공급 업체의 경우 W3C geo spec으로 정의 된 인터페이스입니다. 인터페이스는 특정 유형의 데이터 구조가 어떻게 보이는지를 설명합니다. 당신이 코드를 다음과 같이 Coordinates의 문자를 검색 할 수

navigator.geolocation.getCurrentPosition(function (pos) { 
    var coords = pos.coords 
    console.log(coords) 
}) 

비록 다음 예 예, coords하십시오. 그것은 단지 객체입니다 (예, 프로토 타입이며 생성자가 아닙니다). 거의 아무것도 할 수 없습니다.

Object.getPrototypeOf(pos.coords) 

그래서 여기 두 지점 :

  1. Coordinates는 웹 개발자를위한 것이 아닙니다.
  2. Coordinates도 기능이 아닙니다.

같아요 유일한 방법은, define your own validator로하고 입력 값이 귀하의 요구 사항을 충족하는지 여부를 확인합니다. 당신이 손으로 공예 경우

props: { 
    coords: { 
    validator: function (value) { 
     return value.toString() === '[object Coordinates]' 
    } 
    } 
} 

그러나,이 검증이 실패 할 수 있습니다 자신의 좌표 데이터를 : Coordinates 특별한 toString() 기호가 있기 때문 쉬울 것이다. 좀 더 일반적인 방법은 오리 타이핑과 같습니다. 필요한 속성이 적절한 지 여부를 확인하기 만하면됩니다. 보통 latitudelongitude입니다.

+0

아, 고마워! 이것은 확실히 최고의 대답입니다 :) – callumacrae

0

당신은 사용자 정의 유효성 검사기를 사용하여 값이 생성자의 intance 있는지 확인해야합니다

coords { 
    validator: function (value) { 
     return value instanceOf Coordinates; // Coordinates is a constructor in your case 
    } 
} 

HTML5 Geolocation 문서의보세요.

+0

나는'instanceof'를 어떻게 사용하는지 안다. 'window.Coordinates'는 정의되지 않았습니다. – callumacrae

+0

좌표에 대한 자신의 밸리데이터를 만들거나 자신의 클래스/프로토 타입을 만들 수 있습니다 – Med

0

이 문제도 제가 처리하고 있습니다. 뷰는 사용자 정의 유형의 유효성을 검사 instanceof를 사용하기 때문에이 작동합니다 VUE 구성 요소

props: { 
    coords: { 
    type: Coordinates 
    } 
} 

function Coordinates() {} 
Coordinates.prototype = Object.prototype 

: 내 솔루션 가짜 생성자을 정의합니다.

+0

이것은 유효성 검사를 사용할 때의 이점을 무효화합니다. 'type : Object'를 사용할 수도 있습니다. – callumacrae

+0

@callumacrae : Vue는'Object.prototype.toString.call (propValue) === '[object Object]'를 사용하여'type : Object'를 확인합니다. 따라서'type : Object'를 사용하여 생성자가있는 객체의 유효성을 검사 할 수 없습니다 –