2016-09-19 7 views
1

デコレータを介してes6クラスを動的にサブクラス化する方法はありますか?javascriptのes7デコレータを介してサブクラス(拡張)を作成する

警告:以下が動作しない、ちょうどこの例ではdisucssion

export function dec(target) { 
    var ParentClass = function(...args) { 
    console.log('parent ctor') 
    target.prototype.apply(this, args); // this probally is not right 
    } 
    return newParentClass; 
} 

@dec 
class TestClass { 
    constructor(...args) { 
    super(args); 
    console.log('child ctor'); 
    } 
} 

ため、出力は次のようになります。

> parent ctor 
> child ctor 

効果は同じ例だろう。..

class ParentClass extends TestClass { 
    constructor(...args) { 
    super(args); 
    console.log('parent ctor'); 
    } 
} 

これは可能ですか?

+0

あなたは 'return class extends target {constructor(... args){console.log( 'parent ctor');スーパー(... args); }} '?あなたの例題が奇妙な順序で '親子'と '子供子'を持つように見えるので、私は混乱しています。 – loganfsmyth

+0

'TestClass extends decoratedWhatever(...){' – Bergi

+0

デコレータはES7の一部ではありません。彼らはまだ提案段階にあります。 –

答えて

-1

デコレータを介してes6クラスを動的にサブクラス化する方法はありますか?

いいえ、ES6にはデコレータがありません:-)しかし、将来の言語バージョンではプロポーザルが受け入れられても、サブクラス化にはデコレータを使用しません。代わりに、スーパークラスの式を提供してください:

function dynamicExample() { 
    return class ParentClass { 
    constructor(...args) { 
     console.log('parent ctor', args); 
    } 
    }; 
} 

class TestClass extends dynamicExample() { 
    constructor(...args) { 
    super(...args); 
    console.log('child ctor'); 
    } 
} 
関連する問題