2017-12-08 1 views
1
내가 상속을 기반으로 생성자 이름의 체인을 생성

의 사슬을 얻을. 그러나 그것은 아주 해커/추한 것 같습니다. 그것을하기에 더 좋은 방법이 있습니까? 그리고 알려지지 않은 수준의 깊이에서 효과를 발휘할 수있는 방법이 있습니까? 나는 SUV는 자동차 확장 차량을 확장 한 경우JS 생성자 이름

+1

이 목표의 목표는 무엇입니까? –

+0

^^ 예 : 최종 결과는 무엇입니까? –

+0

웹 리퀘스트를 통해 식별자를 전달해야합니다. 동일한 클래스의 인스턴스를 만들기 위해 서버에서 나중에 사용할 수 있습니다. – Chris

답변

3

나는 기대 'Vehicle.Car.SUV'

나는 당신이 시작하려는 생성자부터 시작 및 종료 getPrototypeOf 및 루프를 사용하는 것

function getLineage(ctor) { 
 
    let name = ctor.name; 
 
    while ((ctor = Object.getPrototypeOf(ctor)) != Function.prototype && ctor) { 
 
    name = ctor.name + "." + name; 
 
    } 
 
    return name; 
 
} 
 

 
class Vehicle { } 
 
class Car extends Vehicle { } 
 
class SUV extends Car { } 
 

 
console.log(getLineage(SUV));

: 그 생성자의 프로토 타입은 Function.prototype 또는 null

.이 (가) SUVCar의 속성 인 것을 제안하는 것처럼 보이기 때문에 .이 아닌 다른 구분 기호를 사용하는 것이 좋습니다. 물론 이는 아닙니다. :-)

+0

완벽하게 작동합니다. 나는 그것을 선택했다. typescripts 네임 스페이스 구문을 기반으로합니다. (그들은 네임 스페이스와 클래스를 구분합니다. – Chris