2017-09-21 3 views
0

ネイティブ関数を使用してクラスコンストラクタを実装すると、described in the duktape wikiとなります。ただし、そこに残されているのはクラス階層を実装する方法です。ネイティブduktape/C関数を使用した継承とコンストラクタチェーン

あなたのネイティブコンストラクタが派生クラスのために呼び出されたとき、duktapeで継承チェーンをどのように扱いますか?

function Base(){ 
} 

... 

function SubClass(){ 
    // Call super constructor. 
    Base.call(this); 
} 

どのようduktapeでそれを実装します:JavaScriptでは、あなたは、通常のような何かをしますか?電話をかける方法がないので、duk_call()を使用することはできません。

答えて

0

あなただけのECMAScriptの例のように同じ動作をしたい場合は、のようなものだろう。ここで興味深い

duk_get_global_string(ctx, "Base"); 
duk_push_this(ctx); 
duk_call_method(ctx, 0); /* = Base.call(this) */ 
+0

は、このコードはduk_is_constructor_call 'とネイティブコンストラクタ関数()'を返すを呼び出しますことを 'falseです'、それは余分な問題を引き起こす。どのように私たちは継承の呼び出しのケースでそれを受け入れることができますが、一般的ではないアイデア? –

+0

そのCスニペットは質問の 'Ecmaスクリプト'の例 'Base.call(this)'と同じように動作するはずです。 ES6より前には、 'super()'呼び出しを行う方法がありません。 Duktapeで実装されると、Cコードにもさらされますが、まだサポートされていないため、Cに相当するものもありません。 –

関連する問題