2014-12-19 9 views
-2

이 있는지 알아보십시오 :유형 I는 다음과 같이 정의 된 유형의 등록 정보

function Type(){} ; 

나는 또한 동적으로 형태를 만들고 그래서 유형을 통과하는 클래스를 가지고 있습니다.

function Factory(Type){}; 

유형에 특정 속성이 있는지 확인해야합니다. 내 질문은 this과 비슷하지만 유형이 객체가 아닌지 확인해야합니다.

[업데이트] 내 형식의 일부에서 작동하는 임시 개체를 만들려고했지만 올바른 형식의 형식이없는 경우 예외를 throw하는 생성자에 일부 형식의 인수가 필요합니다.

+2

* "유형에 *가 있는지 확인하십시오. 자세한 내용은 여기. 어떤 재산? – dfsq

+0

속성의 유형을 검사하는 대신에'type'의 인스턴스를 생성 한 다음'hasOwnProperty'를 사용할 수 있습니까? ... – War10ck

+0

@ War10ck 업데이트보기 – d0001

답변

2

클래스의 모든 개체가 동일한 속성 집합을 사용하도록하는 언어는 없습니다. 생성자는 인수에 따라 만들 속성을 결정할 수 있으며 질문에서 지적한대로 인수를 사용할 수 없습니다.

개체의 인스턴스가없는 경우 클래스 자체에서이 정보를 사용할 수 있도록 자신의 규칙을 사용해야합니다.

하나의 아이디어 : 클래스의 프로토 타입이는만큼 당신이 당신의 자신의 규칙을 따를 때 작동합니다

if ('counter' in Type.prototype) { 
    ... 
} 
if ('owner' in Type.prototype) { 
    ... 
} 

Factory에서 다음

function Type(owner) { 
    this.owner = owner; 
} 
Type.prototype.owner = null; 
Type.prototype.counter = 0; 
Type.prototype.increment = function() { 
    this.counter++; 
}; 

을, 예컨대 모든 속성을 초기화하는 것입니다.

+0

현재 내 속성은 프로토 타입이 아닌 소유자를 정의한 것으로 정의됩니다. 프로토 타입의 속성을 정의하는 것이 유일한 방법입니다. 다른 사람이 실제로 유형을 확인하는 방법을 찾지 못하면 이것을 답변으로 표시 할 것입니다. – d0001