2017-12-08 5 views
1

私は、継承に基づいて、コンストラクタ名のチェーンを生成し得ます。しかし、それは非常にハッキー/醜いようです。それを行うためのより良い方法がありますか、それが未知数のレベルで深く働くようにする方法はありますか?私はSUV車拡張車両を拡張している場合はjsはコンストラクタ名のチェーン

+1

これの背後にある目標は何ですか? –

+0

^^たとえば、最終結果は何ですか? –

+0

私は、後でサーバー上で正確に同じクラスのインスタンスを作成するために使用することができるWebRequestを通じて識別子を渡す必要があります – Chris

答えて

3

私は期待して「Vehicle.Car.SUV」

私はあなたが開始するコンストラクタで始まり、そして終わるgetPrototypeOfとループを、使用したいですそのコンストラクタのプロトタイプは、Function.prototypeまたはnullのとき:

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));

.ではなく、別のセパレータを使用することをお勧めします。SUVCarのプロパティですが、もちろんそうではありません。 :-)

+0

完全に動作します。私は選んだ。 typescripts名前空間の構文に基づいています。 (彼らは別の名前空間とクラスを持っています。 – Chris

関連する問題